经过前文对数据存储的介绍,大家对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极限性能数据库有何妙处?第二回将开启“高性能篇—行列混存”解读。欢迎关注“柏睿数据”公众号,继续修炼数据库~
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。
标签:
每日视讯:宿迁市部署开展2021年度干部任用条例检查工作
今日视点:宿迁“夜经济”升温点亮缤纷夜生活
消息!内蒙古将为3000名女职工免费进行“两癌”筛查
每日观点:河北故城:改善农村人居环境 绘就乡村振兴美丽画卷
每日短讯:全力以赴助企纾困做大做强产业链条
头条:全国铁路6月20日起实行新的列车运行图
观热点:重庆南川:半城“烟云”半城“海”
快讯:巴基斯坦官员解释“少喝茶省外汇”:我们正以贷款的方式进口茶叶
【聚看点】高温来袭西班牙莱尔山脉一带发生山火
每日视讯:最新!北京丰台区封控、管控区域公布,涉及多个街道
今日快看!北京丰台疾控提醒:有以下情况人员,请立刻报备
每日快看:金融大象起舞 沪指收复3300点
每日报道:“交易员”杠上央行 日本国债暴跌熔断
快播:人社部开展第十六届高技能人才评选表彰活动
当前看点!招远阜山镇 企业污染严重 属地监管职责缺失
天天快报!省级重大科技专项“青藏高原(青海)重点河湖水情变化预测及风险评估”项目启动实施
今日播报!老剧重播不及预期 “王心凌热”降温
每日快播:去年全国单位GDP二氧化碳排放比2005年下降约五成
每日热文:市实验中学开展“水果拼盘装点童心世界”活动
资讯:楼市筑底 曙光已现
【新视野】石家庄:“限消”企业登“守合同重信用”榜,这也行?
每日消息!舌边有齿印、脸上长痘、经常腹泻是“湿气重”吗?
每日视讯:股权激励不应忽视股民权益
助力企业持续稳定发展 汉印数字化转型迈上新台阶
OPPO 618最后冲刺! 折叠屏Find N仅7399元起,真正立省不玩套路
勤哲Excel服务器实现客户订单仓储等一体化管控系统
洲际酒店集团618狂欢季重磅来袭 爆款好礼享不停
汇量科技、网龙、中手游、医脉通被纳入港股互联网ETF,或利好资本市场表现
皇圣医健康优品澳博牌海洋星虫 助力心脑健康让慢病快调
资源聚焦,共创共赢 | 福庆板材2022第二季度供应链峰会圆满落幕!
湖南应用技术学院文化传媒学院举行第二届粉笔字大赛
湖南应用技术学院文化传媒学院:把党课开进学生宿舍
Win10系统EXE格式电子书为啥打不开?EXE电子书无法打开的解决方法是什么?
Favoritevideo是什么文件夹?如何删除Favoritevideo文件夹?
什么是Bluetooth外围设备?怎么处理Bluetooth的外围设备?
抵押补充贷款是什么?抵押补充贷款如何办理?
手机摔了会不会有内伤?手机摔黑屏怎么修?
施工许可证在哪个部门办理?建设工程施工许可证办理条件是什么?
居民楼几点可以装修?居民楼装修的注意事项有哪些?
什么是回南天?回南天的防范方法有哪些?
房地产销售基础知识有哪些?房地产销售职责有哪些?
房贷退税需要满足什么条件?买房退税有什么流程?
买房禁忌户型是什么?新手买房注意事项有哪些?
玻璃门地弹簧怎样调整?如何调整玻璃门地弹簧?
什么是环保材料?环保材料有哪些?
宗地面积是什么意思?宗地的测量和计算方法是什么?
新房装修后多久能入住?如何判断是否达到入住的标准?
床头朝什么方向是正确的?床头朝哪个方向最佳?
工抵房与商品房的区别是什么?购买工抵房需要注意什么?
容积率计算公式是什么?得房率是怎么计算的?
房产证上千万别写2个人名字?房子过户需要交纳哪些税费?
医药板块持续反弹 中银证券健康产业混合重仓股涨幅超10%
苏州银行披露稳股方案:拟增持股份金额不低于205.91万元
2.98亿元!君实生物拟募资39.69亿元用于科创板上市
5G股齐涨!中兴通讯与泰国第一大运营商签署战略合作协议
信用卡催收严重不审慎 光大、民生信用卡中心受重罚
广东开展技术技能类“山寨证书”专项治理严厉打击乱收费行为
网络消费维权面临新问题 平台经济治理如何实现?
湖南邵阳:60.13%消费者遭遇“建材城联盟”现象
国家药监局:选购使用装饰性彩色平光隐形眼镜(美瞳)消费提示
睡前刷手机 黑暗中看手机屏幕对眼睛会有什么损害?
郑大一附院儿科教授田培超:不聋不傻孩子两岁半还不会说话
全国总工会:降低高温作业和高温天气作业对劳动者身体健康危害
黄山景区进山人数突破3000人 旅游复苏的曙光来了?
央视点赞!2022宝泉山谷瑜伽嘉年华17日至18日盛大开幕
快讯!东城区今年将开展前门旅游集散中心外迁工作
暑期本地游、亲子游产品成为今年大促新趋势
江苏:扩大阶段性缓缴社会保险费实施范围
重磅!江苏出台“工业33条”推动工业经济平稳运行高质量发展
江苏建设300家省级乡土人才大师工作室 “领头雁”能否致富?
卡本科技集团|您买到的结构胶是这样“炼成的”!
选择瑞虎8 PRO的N个理由,首批车主用车体验分享
江苏第二批山水林田湖草沙一体化保护和修复工程成功入选
江苏累计开通5G基站14.9万个 把握5G机遇 走好创新之路
“同心抗疫携企同行”南京助企纾困二十项举措成效显著
速看!江苏省2022年度考试录用公务员面试时间定了
《扬州市生活垃圾分类管理条例》将于9月1日起施行
一家四口累计献血超6万毫升 他们的献血故事让爱心凝聚成海
再创佳绩!盐城工学院获批13个国家级一流本科专业建设点
起始价157.74亿元!长沙第二批集中供地挂牌出让
天津市水务部门进一步深化各项措施 全面进入防汛备战状态
徐州一楼盘领证3个多月还不开卖 涉嫌捂盘
土地挂牌价蹭蹭上涨 南京二手房价格涨了1907元/㎡
1274.20万人!郑州常住人口总量在全国城市排名第11位
最高200万元购房补贴!西安高新区加大顶尖人才招引力度
【关注】你的高考试卷在评阅了吗?阅卷现场看一看
“空中丝绸之路”建设5年来 郑州机场完成货邮吞吐量316万吨
周末再现33℃晴热天气 津城气温将明显回升
准备好“哇塞”了吗!“持盾”升级的七季洗沐二合一上新啦!
为“专精特新”企业提供多项帮扶措施 今年智博会将设立专题展区
重磅!首届中国(重庆)国际消费节将于6月16日开启
1至4月贵州出口农食产品14.8亿元 增长81.7%
好消息!6月14日24时起贵州上调国内成品油价格
新增产值88.2亿元!贵州新能源电池及材料项目年内试生产
降雨趋缓!今夜到明天雨带南移 闽北雨势再度增强
福建省工会职工疗休养现场推进活动在清流县举办
厦门6.4万人参与无偿献血总献血量18.7吨 居全省首位
白天皖电送浙,夜间浙电输皖!浙江与安徽签署电力置换互济协议
安徽:轻微违法违规行为免罚清单(第二批)7月1日起施行
“六安链接合肥——干部拜师学艺”学习成果汇报会