全网最专业PolarDB-MySQL 大SQL解决方案--之列式索引节点原理 (二)
❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3300人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近400 9群 200+,开10群PolarDB专业学习群100+)
https://www.aliyun.com/minisite/goods?userCode=qyua9rvi
https://www.aliyun.com/minisite/goods?userCode=qyua9rvi
上期内容
全网最专业PolarDB-MySQL 大SQL解决方案--之如何添加列式索引 (一)
PolarDB for MySQL IMCI 部分的内容,除了阿里云,我自认为这个系列目前我是最专业的,有哪些地方解释的不对,还请阿里云的研发老师指正。
最近开始在大量的应用PolarDB的IMCI的功能,多个业务线在并发,都在测试。不同的业务线测试的结果可能也不尽相同,使用的方法和方案也都有各自的特点。
我特别想把PolarDB的IMCI推广的更好,让更多的业务享受到PolarDB的插件化数据库的特性。这里我准备写几期帖子,把我研究的部分也都和大家一一展示,如果有同道中人,也可以反馈您的使用中的问题,我们一并和阿里云的老师进行沟通,相信他们会做出更好的功能并逐步完善他。
今天我们是IMCI的第一集,IMCI的原理,与问题的解决方案。MySQL在SQL的执行解决方案中,一直是令人诟病的,SQL执行语句优化器的设计的问题,让复杂的SQL运算无法在MySQL上运行。
基于MySQL的问题,直接在MySQL数据库引擎本身在进行动作是很难的,而PolarDB-MySQL,后续我们都简称为P-MYSQL,使用了一个路由+列式节点的方案+Shared storege的方式来解决这个问题。
这个方式有以下的一些特点
1 列式处理的表是经过客户进行挑选的,语句也是通过语句执行的成本来进行限制,只有达到COST的语句才可以流入到IMCI 列式的节点。
首先,语句到IMCI 经历了几个过程,首先是POLARDB 数据库的代理,这里有几个部分会直接到IMCI
1 写的特殊的语法,直接将SQL语句强制到IMCI的节点的语法,代理直接就根据语句的要求,直接将语句发送给IMCI的节点
2 通过初步的判断语句的撰写的方式,复杂程度,比如大量的JOIN,大量的聚合等
在第一波代理将语句打入到IMCI后有的人会问,那么COST的阈值作为判断来进行语句的转发,这个还有作用吗?
这个当然有作用,POLARDB FOR MYSQL的语句执行方式分为 行存模式,行存并行执行计划,列存计划三个方式来进行语句的执行,性能优化器的会再次根据cost的计算IMCI > PQ > 行存串行 的方式来进行语句的从高COST到底COST的分门别类的语句执行。
除此之外,还有最后一种动态反馈的机制,如果列存与行存的数据有不一致的情况,那么访问会再次返回行存进行解决。
这里简述一下我理解的IMCI列式的数据处理和存储的原理
1 列存数据采用“无序追加” + 统计信息的方式,数据的组织单位是64K行为一组,每个组对不同的列进行打包,形成DATAPACK,数据的写入只有目前活跃的数据组接收数据,写满后,压缩并存储。
如果遇到数据的删除和更新的情况下,采用的是标记删除行,并追加新行的通用方式,那么在建立列存的时候,我们采用的是存量数据库和增量数据的方案。
1 存量数据库通过扫描主键,快速进行行转列的工作 2 增量数据分类普通事务 和 大事务,普通事务在修改操作写入列更新缓存,同步应用到列存 而大事务,会通过提前获得事务编号,对外不可见数据,但进行更新的方式来进行数据的列式数据的添加,降低了平衡延迟和性能之间的问题。
在数据查询是通过快照隔离,列存记录写入和删除,通过AP查询通过编号来获取全局一致性来解决。
这里有人好奇列式数据都打包了,怎么看和方便进行数据回述,元数据(Meta):每个 DataPack 都会自带一套粗糙索引(Rough Index),记录该包内数据的,最大值(Max)、最小值(Min),数值总和(Sum),空值个数(Null Count)记录总条数。
优化器在扫描时,会先检查 DataPack 的元数据。如果不符合查询条件(例如 WHERE age > 100,但 DataPack 的 Max 为 90),整个 DataPack 会被直接跳过(Skipping),不进行解压和读取。
整体的数据查询的过程可以简单总结为
1 RowGroup 过滤:优化器根据 dept = 'IT' 检查所有 RowGroup 的统计信息,剔除完全不含 'IT' 的组。
2 DataPack 定位:在保留的 RowGroup 中,仅读取 dept 列和 salary 列对应的 DataPack。
3 进一步过滤:利用 dept DataPack 的元数据再次跳过不相关的包。
4 解压与计算:将相关的 Compressed DataPack 读入内存解压,利用 SIMD 指令在内存中进行高速 Batch(批次)计算。
好了今天就先说到这里。
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?
OceanBase Hybrid search 能力测试,平换MySQL的好选择
写了3750万字的我,在2000字的OB白皮书上了一课--记 《OceanBase 社区版在泛互场景的应用案例研究
OceanBase 6大学习法--OBCA视频学习总结第六章
OceanBase 6大学习法--OBCA视频学习总结第五章--索引与表设计
OceanBase 6大学习法--OBCA视频学习总结第五章--开发与库表设计
OceanBase 6大学习法--OBCA视频学习总结第四章 --数据库安装
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
OceanBase 架构学习--OB上手视频学习总结第二章 (OBCA)
OceanBase 6大学习法--OB上手视频学习总结第一章
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
“合体吧兄弟们!”——从浪浪山小妖怪看OceanBase国产芯片优化《OceanBase “重如尘埃”之歌》
MongoDB “升级项目” 大型连续剧(3)-- 自动校对代码与注意事项
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
MongoDB “升级项目” 大型连续剧(1)-- 可“生”可不升
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 麻烦专业点,不懂可以问,别这么用行吗 ! --TTL
免费PolarDB云原生课程,听课“争”礼品,重塑云上知识,提高专业能力
非“厂商广告”的PolarDB课程:用户共创的新式学习范本--7位同学获奖PolarDB学习之星
“当复杂的SQL不再需要特别的优化”,邪修研究PolarDB for PG 列式索引加速复杂SQL运行
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 新版本就一定好--由培训现象让我做的实验
说我PG Freezing Boom 讲的一般的那个同学,专帖给你,看看这次可满意
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
这个 PostgreSQL 让我有资本找老板要 鸡腿 鸭腿 !!
MySQL相关文章
一篇为MySQL用户,分析版本核心差异的文章--8.028-8.4的差异
那个MySQL大事务比你稳定,主从延迟低,为什么? Look my eyes! 因为宋利兵宋老师