开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2580人左右 1 + 2 + 3 + 4 +5 + 6 + 7)(1 2 3 4 5 6群均已爆满新人进7群,开8群)
上次关于PolarDB-M的部分,正写到关键,跨机并行戛然而止。估计骂我的不少,把数据库的东西,写成评书,关键时刻一拍惊堂木,咱们下回分解。
这就到了下回,咱们本次的分解一下PolarDB-M的跨机并行的问题,这次咱们属于加量不加价,不光说并行,还的说弹性并行。是的数据库的架构已经发展到了,利用特有的硬件,开启了我们之前不可思议的一些功能。
这里我呢揭阿里云PolarDB-M的老底,大家后续在使用这个数据库产品,一定要选择8.02这个版本,而不是8.01。原因很简单,你花一样的钱,8.01仅仅能支持的是本地CPU进行并行查询,而如果你购买了8.02这个版本,那么你将破解硬件的封印,将你脑子里面想了千百遍的不可能,变得可能。
我的绘画能力一直不怎么样,大家这里也看出来了,虽然我把抄送金钢经的金沙笔都拿出来了,也没有挽救我,拙劣的绘画功底。
好了言归正传,这是三个图,第一个部分是简略的PolarDB-M的结构图,数据之间的复制走的是内存的通道,RDMA,PolarDB直接采用的是REDO的数据复制,8.01里面的计算节点的CPU的并行只能是给自己的节点使用,而在8.02版本中,大家可以看到,其他主机--当主库的CPU 比较闲,而从库的CPU 比较忙,需要并行计算的情况下,主库的CPU就直接和从库的CPU并行一起处理从库的数据。在PolarDB中有一个名词,多级并行查询。
这彻底的改变了单机CPU数量的瓶颈,内存的瓶颈,IO资源的瓶颈,所以在购买PolarDB的时候要购买8.0.2.2.6 。
那么此时这样的功能应该在哪里使用是一个问题
1 OLAP 轻量级的环节,PolarDB-M 是一个插件数据库产品,他和我们意义上的MySQL的数据库容器化的概念是不同的。他是一个集合了,MySQL数据处理,+ 归档引擎(压缩数据)+IMCI(列式处理节点)+ 弹性 + 多节点并行 = PolarDB
2 多节点CPU使用不均衡,大多数情况下,POLARDB最热的点是读库,主库的CPU 在很大的情况下用不上,因为POLARDB 是自动读写分离的产品,也就是语句到了PolarDB直接就读写分离了,只要你代理选的场景对。那么最终的结果,读库忙死,写库闲着,这样非常不利于,我们最大化利用资源,所以上图中,可以看到写库的资源,直接分给读库使用。
这里稍微说一点PolarDB本身设计中的一些问题
1 读库的性能不好,会拖累主库,尤其在purge undo log 所以购买一个PolarDB 最低的配置至少是4CPU。
2 读库的如果CPU使用的过载,会让redo apply性能降低,堆积内存数据在主库,导致无法刷脏。
理解了PolarDB的特点,避免问题就是我们这些搞云上数据库的新DB人所要考虑和避免的。
说完这一切,完了吗?没有还有更让人开始无法理解的问题,弹性。
如果你搞云上的数据库还搞RDS ,那真的是没有技术含量,还把你的原有的工作都抢走,你就妥妥的变成一个,labor, 中文力霸。这就是学习提高和不学习不提高,傻干的区别,技术革新,技术创新,你有解释权,你有优先掌握技术的权利,否则你和一个苦力由什么区别,也就赚个辛苦钱。
话回正传,弹性是PolarDB 的一个卖点,那么弹性的加入后,CPU的并行,跨机并行怎么做,就变得更复杂了。在之前弹性分为,有源弹性和无源弹性,这里有源弹性可以理解为,弹性本身是在一个固定的主机的配置上,增加弹性。无源弹性的机理是,主机在工作中,不提供CPU和内存,如果你不用就直接冬眠了,在冬眠期间的计费是停止的。
这里如果使用8.01弹起的主库CPU,是无法参与到从库的计算中的这是对资源极大的浪费,而到了8.02,主库弹起的CPU 会直接加入到从库的工作中,这属于花钱就要用,不会有用不上的资源。
这就是阿里云的PolarDB-M的黑科技,多个节点的CPU可以给那个最累的节点用,这在传统的数据库概念中,硬件体系和数据库架构体系中,属于痴人说梦。但上了云,用了黑科技,这及时现实。
到此,PolarDB已经从之前青涩的状态,变得逐渐强大,且已经到了上了阿里云,你用MySQL RDS,用ECS 搭建MySQL就有点 “门头”。
对于MySQL来说,PolarDB-M 的并行提供了 多表连接并行、并行排序、并行分组,并行聚集、并行函数、子查询并行,分区表并行。开启了并行后,需要调节MySQL的一些参数
1 innodb_adaptive_hash_index 参数,要关闭:在查询中为了保证数据的统一和完整,并行需要对一颗btree树进行频繁的多CPU的扫描,但如果你构建了HASH INDEX hash index本身有容易失效的问题,那么你的系统会在反复的产生 hash index和反复的扫描,反复的失效中损失性能。开并行关innodb_adaptive_hash_index。
2 采用并行需要注意 1 浮点精度差别 2 采用并行会多出中间结果 3 不加ORDER BY 的排序结果,每次的计算的结果顺序会不同limit1的结果会不同 4 index Merge 的情况,不会开启并行
好了写到这里,并行完事了吗,没有完全没有,可说的还多着呢 ,书到此回,咱们下回书!(啪)
OceanBase 相关文章
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
PostgreSQL 相关文章
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
PolarDB 相关文章
PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)
PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless
POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PolarDB 从节点Down机后,引起的主从节点强一致的争论
PolarDB serverless 真敢搞,你出圈了你知道吗!!!!
PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
POLARDB -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
MongoDB 相关文章
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
MySQL相关文章
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列