人民交通网-嫩草嫩草嫩草影院-人民交通杂志官网

  • 手機站
  • 微信
  • 搜索
    搜新聞
    您的位置:首頁 > 企業觀察

    深入淺出話DB|柏睿數據RapidsDB高性能解密之數據編碼

    經過前文對數據存儲的介紹,大家對RapidsDB的數據存儲方面有了一定的認知。同時朋友們可能也會思考,作為新一代的分布式數據庫,RapidsDB還有沒有更硬核的優化手段?摳細節能摳出個三室一廳那種?

    好!!本文我們就RapidsDB數據編碼方面來看如何做到性能加速。

    介紹RapidsDB的數據編碼,準確地說,是介紹存在磁盤內的列存儲表的數據編碼。列存儲表的數據以多種不同形式編碼存儲,包括字典編碼、游程編碼和值編碼。只有某些編碼可以直接處理,即直接“操作”,如字典編碼、游程編碼和整數值編碼。

    以字典編碼為例,對于只有3個不同值的字符串列的一個段,為每個字符串存儲一個2位的ID號,ID號被用作字典的參考。當存儲在列存儲中時,這些ID被緊緊地打包在一起。請參考以下字典:

    當它被存儲到列段中時,可以表示為打包字符串ID的位向量:

    ●Strings:”red”,”blue”,”green”,”green”,”red”

    ●Strings IDs:0,2,1,1,0

    ●Bit vector:00 10 01 01 00 (2 bits per string ID)

    作為直接對編碼數據進行操作的例子,RapidsDB可以對字符串字典編碼的列段執行過濾操作,比如說“t.a=’xyz’”,方法是首先找到字典中每個條目的過濾結果,然后在掃描該段時,查詢執行系統簡單地獲取t.a中每個值的編碼ID號,并使用它來查找在字典的初始掃描中計算的該ID的字符串比較結果。這往往比實際情況中的字符串比較要快得多。其他類型的操作也可以直接在編碼數據ID值上完成,包括比較進行分組操作所需的ID值。更多細節可自行拓展了解。

    在列存儲掃描之外的RapidsDB中的大多數查詢處理都是一次一行地完成的。對編碼數據的列存儲處理以矢量化的方式完成,其中來自一列的大批量數據在一個或多個相對簡單的循環中處理。與一次一行的處理相比,這些循環對現在CPU更加友好,通過降低指令數量,提高了高速緩存使用率,并提高了處理器指令流水線的效率。

    基于上述編碼,通過使用特殊的編碼處理技術以及支持英特爾AVX2指令集的處理器上的單指令多數據(SIMD)指令,使包括過濾和聚合在內的某些操作可以在非常高效的狀態下運行。

    硬件上的SIMD不是編碼數據優化的唯一核心,即使沒有SIMD的支持,對編碼數據的操作性能也會提高幾倍到30倍;使用了SIMD則可以進一步提升性能,帶來至少2-3倍的增益。具體優化結果將取決于數據及查詢。個別查詢的一些部分可能不需要對編碼數據進行操作,因此用戶體驗到的加速效果可能會有所不同。

    默認情況下,對數據編碼的操作是數據庫內部自動執行的。用戶不需要更改任何設置就能從中受益。對數據編碼使用操作是查詢在系統運行時生成的,而不是由查詢優化器做出的。

    編碼數據的查詢優化只能在列式表中體現,需要具備以下一個或多個組件:

    ●過濾器Filters

    ●分組 Group by

    ●聚合 Aggregates

    ●聚合表達式

    ●分組表達式

    ●整數列上的Star joins

    不管運行中的編碼列不同值的數量是多少,都可以對編碼數據進行優化操作。編碼中不同值的數量越少,優化性能越好。這是因為當字典變小時,意味著列存儲數據被壓縮到更小的尺寸,進而查找表過程中更容易適配到處理器的高速緩存。

    先舉個查詢例子,它通過使用了幾個包含性能優化的組件從而在對編碼數據的操作中提升了性能:

    如果再加上一張列式表f,也可以從編碼數據的連接操作中得到性能優化。查詢示例:

    這個查詢是星型模型Star joins的一個簡單例子。如果用戶使用星型模型Star joins做關聯,并且關聯鍵是整數類型,那么查詢就可以在編碼數據的操作中得到性能優化。簡單說明,這里是使用group by子句和聚合函數從編碼數據的連接操作中加速性能。

    ●再舉個表關聯的例子:

    這個例子展示了編碼連接的作用:

    后面的關聯查詢在雙核筆記本電腦上,只需要0.02秒算出結果。 注意了,它是對表r做一百萬行的全表掃描,然后與維表d(110行)做連接。

    通過查看RapidsDB的圖形計劃或者show profile json的結果輸出,可以了解數據編碼功能連接正被用于上述語句配置文件的查詢計劃中:在HashJoin運算符上,可以看到屬性"encoded_join_enabled":"yes"。此外,還可以看到對編碼數據的操作被推送到ColumnStoreScan列存掃描運算符。ColumnStoreScan、 HashJoin和各種GroupBy運算符可以在掃描過程中通過一個或多個散列連接(hash joins)的序列來共同實現星型連接(star join)。

    ●支持的編碼數據

    目前RapidsDB僅對以下情況支持對編碼數據的操作:

    ●帶有字符串字典和字符串游程編碼的字符串類型;

    ●具有值和行程編碼的整數列。

    分組、聚合操作僅支持整數類型做數據編碼。過濾支持字符串和整數類型做編碼數據。

    通常RapidsDB會自動對列存儲數據進行編碼。但是,在極少數情況下,本該自動編碼的操作沒有被編碼數據識別到,但對用戶的應用程序來說,這次數據編碼優化十分重要,則可以通過option ''符號來實現,例如:

    ●支持的操作和限制

    對編碼數據支持的操作以及對操作的限制做個詳細分類說明:

    ●掃描Scan:

    ●整數編碼更快解碼

    ●過濾Filter:

    ●下列過濾器:

    ●字符串字典和字符串游程編碼的字符串類型

    ●用于游程編碼的整數類型

    ●過濾器表達式中的“或”運算;篩選器表達式必須包含單個字符串列,以加快處理速度

    ●支持字符串列上的Bloom篩選器(消除單個字符串列上沒有匹配連接的行)

    ●聚合Aggregates:

    ●支持的聚合:sum, min, max, count, any

    ●支持的聚合數據類型:全數字

    ●支持的聚合表達式:一個表達式中允許有多個表列

    ●支持的聚合編碼:整數、整數游程編碼

    ●分組Group-by

    ●沒有分組的聚合(也稱為標量聚合)不會對編碼數據執行操作

    ●分組計數啟動非常快

    ●分組:

    ●允許有多個分組列

    ●允許混合使用列和表達式

    ●分組列必須僅使用以下編碼:整數、整數游程編碼

    ●每列幾千行不同值的數量有一個限制,超過這個限制,系統將恢復到一次一行的處理,并且行段的數據的本地聚合將向父全局聚合運算符輸出行

    ●類似的,對幾千個組的組總數也有一個限制,超過這個限制就不使用優化的分組處理

    ●排序關鍵字上的分組可能不如其他列上的分組高效,因為可以執行有序分組,而哈希分組可能更好

    ●分組的表達式:

    ●一個表達式中只允許一個輸入列

    ●表達式結果必須為整數

    ●在分組列和表達式集中,每個列表只能使用一次

    ●關聯Joins

    ●連接必須在某種類型的整數列上,或者在內部表示為整數的另一種列類型上,如datetime

    ●查詢優化器選擇的一個或多個連接必須是HashJoin類型

    ●連接必須是多對一的關系

    ●HashJoin(或一些列HashJoin)必須出現在上 ColumnStoreScan

    ●對連接結果的查詢中必須存在按操作分組和聚合

    柏睿數據RapidsDB在某國有大行普惠金融項目應用中,對應用開發人員進行了開發優化建議和幾次針對性查詢優化中,就使用了數據編碼的方法,取得了明顯的效果:優化前后得到5-20倍的效果。

    好了,數據編碼我們介紹到這。如果您有疑問或建議,歡迎在后臺留言,我們將針對大家的共性問題,發布【答疑篇】,互動的同學有機會獲得神秘獎品呦。

    RapidsDB極限性能數據庫有何妙處?第二回將開啟“高性能篇—行列混存”解讀。歡迎關注“柏睿數據”公眾號,繼續修煉數據庫~

    (新媒體責編:pl0902)

    聲明:

    1、凡本網注明“人民交通雜志”/人民交通網,所有自采新聞(含圖片),如需授權轉載應在授權范圍內使用,并注明來源。

    2、部分內容轉自其他媒體,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。

    3、如因作品內容、版權和其他問題需要同本網聯系的,請在30日內進行。電話:010-67683008

    時政 | 交通 | 交警 | 公路 | 鐵路 | 民航 | 物流 | 水運 | 汽車 | 財經 | 輿情 | 郵局

    人民交通24小時值班手機:17801261553 商務合作:010-67683008轉602 E-mail:zzs@rmjtzz.com

    Copyright 人民交通雜志 All Rights Reserved 版權所有 復制必究 百度統計 地址:北京市豐臺區南三環東路6號A座四層

    增值電信業務經營許可證號:京B2-20201704 本刊法律顧問:北京京師(蘭州)律師事務所 李大偉

    京公網安備 11010602130064號 京ICP備18014261號-2  廣播電視節目制作經營許可證:(京)字第16597號

    主站蜘蛛池模板: 铸铁平台,三维柔性焊接平台,划线平台,大理石平台,检验平板,花岗石平台_泊头市恒量机械设备有限公司 | 欧艺宝盾科技(北京)有限责任公司_北京旋转门厂家_转门维修_高端商务门控定制 - | 专注全球电机测试-电机测试系统-AIP艾普【官网】 | 永磁变频空压机_青岛空压机_螺杆空压机_口罩专用空压机-青岛凯瑞特机电设备有限公司 | 连云港物流,连云港物流公司就选连云港华美物流有限公司 | 泡沫混凝土垫层填充厂家,发泡混凝土垫层填充,轻质混凝土垫层填充厂家,深圳市鸿奥建材发展有限公司 | 烧碱-工业片碱-火碱价格-氢氧化钠厂家-巩义市宝莱新材料厂 | 自动烘干线,工业烘箱生产厂家-湖南耐美特智能装备有限公司官方网站 | 伸缩接头,限位伸缩接头,传力接头,可拆卸接头,橡胶接头,衬四氟橡胶接头,橡胶软连接,橡胶补偿器,防水套管- 巩义市隆盛管道设备有限公司 | 驾驶扫地机-手推洗地机-吸尘器-清洁设备厂家-荣事达官网 | 物联网空开-智能空气开关-智能断路器-家用接触器-万联电器官网 | 天津市友联机电设备有限公司| 襄阳亚舟重型工程机械有限公司 | 橡胶管_高压橡胶管_高压胶管_铠装高压胶管-河北远大新特橡塑有限公司 | 无线计量仪表-电力物联网仪表-CE认证电表 | 中国环博会 | 亚洲旗舰环保展 2025.4.21-23 上海新国际博览中心 中国焊接协会网站—中国焊接信息网;焊接行业最权威访问量最大的专业网站:焊接信息、焊接材料,焊接机器,焊接设备,焊机,焊材,辅助设备,焊机配件,仪器仪表,电动工具,钎焊,送丝机,表面处理,自动化专机,焊锡丝,助焊剂 | 铸造厂-铸铝-铸铜-铝合金铸造-重力铸造-翻砂铸造-[剑锋机械配件]专业东莞|深圳铸造厂 | 陶瓷复合钢管-专业提供江苏陶瓷钢管和陶瓷内衬复合钢管的生产厂家 | 上海网站建设公司|上海自适应网站制作|上海仿制网站建设公司-智淇网络 | 专业提供医疗器械,医疗设备,进口国产医疗设备,医疗耗材采购,医疗设备厂家等医疗器械信息-上海聚慕医疗器械有限公司 | 激光切割机_激光切割机价格-山东大威激光科技有限公司 | 江苏宇力医疗器械有限公司| 全球无人机网(81uav.cn)_无人机买卖、租赁服务、培训的最大门户网站 | 模压化粪池_三格式化粪池_玻璃钢化粪池厂家 | 室内通风系统,新风系统专卖,建筑通风系统专卖_绿岛风官网 | 无心磨床- 无锡润一机床有限公司 | 随州市东正专用汽车有限公司| 太阳能路灯 太阳能路灯厂家 路灯厂家-保定正联光电科技有限公司 太阳能光伏发电_太阳能热水器_空气能热水器_直饮净水器_深圳市大兴节能环保科技有限公司 | 手持电能质量测量仪-TD-1168多功能高空接线钳-上海妙定电气有限公司 | 混凝土砂石分离机_龙门洗车机_振动型砂石分离机 - 青州同辉环保机械 | 浙江凯力防爆电气集团有限公司【官网】 | 驾驶洗地机|手推洗地车|天津洗地机|扫地车|仓库工厂扫地机|工业吸尘器|扫雪机|耐洁思 | 郑州同林-金属切削液,全合成,半合成,防锈水溶性,微乳,油基长寿乳化切削液生产厂家 | 立式/卧式/暖气/管道泵,管道离心泵选型,管道增压泵型号 - 安平鼎千泵业制造厂 | 深圳沃亚游学官网丨国外游学丨国际夏冬令营丨美国游学线路丨出国短期游学丨亲子海外游丨游学咨询: 0755-83843308 | 温州冰顺制冷科技有限公司 | 苏州空气压缩机-无油涡旋空压机-真空泵价格-变频空压机-苏州赫利亚斯气体技术有限公司 | 深圳沃亚游学官网丨国外游学丨国际夏冬令营丨美国游学线路丨出国短期游学丨亲子海外游丨游学咨询: 0755-83843308 | 徐州护栏,围栏,锌铁丝网围栏安全设施专家徐州铜山区威峰金属护栏厂 | 无锡大型数控龙门铣加工中心,精密焊接件制造,机械设备加工-无锡嘉迅机械科技有限公司 | 耐磨工业软管,PTFE耐腐蚀软管,耐磨喷砂胶管,超耐磨软管厂家,漯河利通液压管利通科技-耐磨工业软管,PTFE耐腐蚀软管,耐磨喷砂胶管,超耐磨软管厂家,漯河利通液压管利通科技 |