这次的EW争端,可能让很多人重新认识了软件国产化的重要性和急迫性。对企业级应用来说,芯片、操作系统、中间件、数据库这些都是俗称"卡脖子"的技术,例如数据库,各种国产数据库,可以说是百花齐放的状态,但这其中还是掺杂着各种问题,建荣写的这篇《从RDS算不算国产数据库谈起》就提到了一些,但无论怎样,国产化的道路,还是必须坚持的,需要技术人的沉淀、企业社区的支持、技术生态的创建,任重而道远。

数据库的领域,已经涌现出很多的国产化产品,有些已经非常成熟了,最近尝试的是叶大佬负责的万里GreatSQL数据库。

GreatSQL是源于Percona Server的分支版本,除了Percona Server已有的稳定可靠、高效、管理更方便等优势外,特别是进一步提升了MGR(MySQL Group Replication)的性能及可靠性,以及众多bug修复。此外,GreatSQL还合并了由华为鲲鹏计算团队贡献的两个Patch,分别针对OLTP和OLAP两种业务场景,尤其是InnoDB并行查询特性,TPC-H测试中平均提升聚合分析型SQL性能15倍,最高提升40多倍,特别适用于周期性数据汇总报表之类的SAP、财务统计等业务。

GreatSQL可以作为MySQL或Percona Server的可选替代方案,用于线上生产环境。完全免费并兼容MySQL或Percona Server。GreatSQL由万里数据库发起、主导、维护,官方欢迎广大MySQL使用者、爱好者下载使用,或者提交代码、issue等。

1. 使用MySQL社区版存在什么风险?

可能很多人会问这个问题,我用的是MySQL社区版,没使用企业版,还会有什么风险?

万里数据库核心研发团队深入研究MGR架构,并在不断的BUG修复实践中总结出了一套完善、流畅的BUG修复流程,将MGR的缺陷分为BUG和性能两类,整理出共16大类共数几十个BUG及性能缺陷问题,

搜索MySQL官方bug站,可以看到MGR分类下未修复的bug数量还是比较多的,

当服务器配置高,网络环境好,业务量小的时候,这些MGR相关的bug可能不容易碰到。如果是网络环境稍微复杂一些,例如同城多数据中心环境,甚至跨交换机,都可能会遇到网络分区条件下的一些bug。或者当业务量较大,负载较高时,可能会产生丢数据、OOM,或事务频繁回滚、死锁等问题。

由于MGR自身的复杂性,以及复现BUG场景也更困难,所以MySQL社区版针对MGR的BUG修复工作通常比较缓慢,堆积较多。这也就造成了不少用户不太敢放心使用MySQL社区版的MGR,担心遇到各种不可控的BUG,甚至较严重的线程、事务hang住等问题,感觉还是不那么可靠。

而GreatSQL已经有效解决了绝大多数较严重的问题,可以更放心地在金融级应用场景使用MGR架构。

2. GreatSQL的优势及展望

在金融级应用场景中,对数据的可靠性和架构的容错性要求都更高,对多数据中心甚至多活都有较高需求。为此,GreatSQL未来会在以下几方面着重发力。

2.1 增加更多金融级场景需求特性

  • 增加地理标签功能。当在多机房部署MGR时,可以保证每个机房中至少有一个节点都参与事务认证,确保该节点总有最新事务,这可用于解决多机房数据同步的问题。

  • 采用全新的流控机制,流控阈值计算更合理、细致,不会出现频繁性能抖动问题。

更多企业级新特性正在持续完善中,后续的版本会陆续放出。

2.2 提升同城双机房和跨城架构部署的可靠性

  • 支持AFTER模式下多数派写机制。发生网络分区时,只要多数派节点已经回放完毕,集群就可以继续处理新的事务,依然可以保障集群的高可用性。

  • 解决磁盘空间爆满时导致MGR集群阻塞的问题。当发现某节点磁盘空间满了,就会让这个节点主动退出集群,避免像MySQL社区版那样整个集群被阻塞的问题。

  • 解决多主模式下或切主时可能导致丢数据的问题。调整了事务认证处理流程,改成放到applier queue里按照paxos顺序处理,这就解决了在多主模式下或切主时可能导致丢数据的问题。

  • 解决节点异常退出集群时导致性能抖动的问题。优化paxos通信机制,发生异常时只会产生约1~3秒的性能小抖动,最差时TPS可能只损失约20%~30%。而MySQL社区版本可能会造成约20~30秒的性能抖动,最差时TPS可能有好几秒都降为0。下面两个图非常明显体现了GreatSQL针对这种情况所做的优化。

MySQL社区版:5秒发现问题,22秒后将其踢出。

GreatSQL版本:耗时约3秒即完全恢复,时效提升约90%。

  • 节点异常状态判断更完善,比MySQL社区版本能更快发现、判断节点异常状态,有效减少切主和异常节点的等待耗时。下面两个图体现了GreatSQL针对节点状态异常做出更快速准确的判断。

MySQL社区版:5秒发现问题,22秒后将其踢出。

GreatSQL版本:2秒发现问题,9秒后将其踢出,时效提升约60%。

2.3 MGR 性能提升

  • 优化事务认证队列清理算法。MySQL社区版本中,认证数据库采用类似全表扫描的方式,效率极低。优化后,采用基于类似索引机制,有效解决清理效率低、性能抖动大的问题。

  • 提高MGR吞吐量。经过优化,有效提升MGR的吞吐量,并减少网络延迟对访问性能的影响。

  • 提升一致性读性能,并降低从库只读延迟。

2.4 InnoDB 事务锁以及并行查询优化

合并了由华为鲲鹏计算团队贡献的两个Patch,分别针对OLTP和OLAP两种业务场景。

  • 优化InnoDB事务锁机制,将原来的红黑树改为无锁哈希结构,在高并发场景中有效提升事务并发性能至少10%以上。

  • 实现对InnoDB底层B+树多个子树的并行扫描机制,极大提升聚合查询效率,TPC-H测试中,最高可提升30倍,平均提升15倍。

特别适用于周期性数据汇总报表之类的SAP、财务统计等业务。

其他更多企业级特性展望

官方表示,在未来他们还计划将一部分企业级特性开放出来,包括且不仅限于国产化硬件适配、等保合规、安全加密、Oracle兼容等众多特性。

3. GreatSQL VS MySQL社区版

特性 GreatSQL MySQL社区版
地理标签
全新流控算法
InnoDB并行查询优化
InnoDB事务锁优化
网络分区异常应对 ⭐️⭐️⭐️⭐️⭐️ ⭐️
大事务处理 ⭐️⭐️⭐️⭐️⭐️ ⭐️
节点异常退出处理 ⭐️⭐️⭐️⭐️⭐️ ⭐️
一致性读性能 ⭐️⭐️⭐️⭐️⭐️ ⭐️
提升MGR吞吐量 ⭐️⭐️⭐️⭐️⭐️ ⭐️
多写模式下可能丢数据 ⭐️⭐️⭐️⭐️⭐️ /
单主模式下切主丢数据 ⭐️⭐️⭐️⭐️⭐️ /
MGR集群启动效率 ⭐️⭐️⭐️⭐️⭐️ /
集群节点磁盘满处理 ⭐️⭐️⭐️⭐️⭐️ /
TCP self-connect问题 ⭐️⭐️⭐️⭐️⭐️ /
 

近期更新的文章:

《无外网的情况下,DBeaver下载数据库驱动的方案》

《SQL Server中怎么知道哪些表被访问过?》

《最近碰到的问题》

《Java 18发布:甲骨文公司已开始将Java纳入其软件许可审计》

《黄瓜是绿色的,为什么没叫绿瓜?》

文章分类和索引:

《公众号900篇文章分类和索引》

国产数据库之-GreatSQL相关推荐

  1. 2023年4月国产数据库大事记-墨天轮

    本文为墨天轮社区整理的2023年4月国产数据库大事件和重要产品发布消息. 目录 4月国产数据库大事记 TOP10 4月国产数据库大事记(时间线) 产品/版本发布 兼容认证 代表厂商大事记 厂商活动 相 ...

  2. 数据库选型-国产数据库如何满足你的需求

    国产数据库列表 随着国内各种各样的业务场景的多样化,带来数据存储和计算的需求越来越多.国内很多企业为了满足自己的产品需求开发出了我们自己研发的数据库.这些数据库基本围绕着数据结构,数据关系,数据量,并 ...

  3. 2022年12月国产数据库大事记-墨天轮

    本文为墨天轮技术社区整理的2022年12月国产数据库大事件和重要产品发布消息. 目录 12月国产数据库大事记(时间线) 产品/版本发布 兼容认证 排行榜新增数据库 厂商活动 相关资料 12月国产数据库 ...

  4. 国产数据库名录和产品信息一览-2023

    目录 国产数据库列表 国产数据库大事记 国产数据库列表 序号 产品名称 产品类别 厂商 相关资讯 1 AbutionGraph 图数据库 北京图特摩斯科技有限公司 2 Aglior 实时数据库 安捷中 ...

  5. 国产数据库列表(275种)最全名录及产品信息一览

    关注工号:数元斋 国产数据库列表 序号 产品名称 产品类别 厂商 1 AbutionGraph 图数据库 北京图特摩斯科技有限公司 2 Aglior 实时数据库 安捷中科(北京)数据科技有限公司 3 ...

  6. 2022年5月国产数据库大事记-墨天轮

    本文为墨天轮社区整理的2022年5月国产数据库大事件和重要产品发布消息. 5月国产数据库大事记 TOP11 5月国产数据库大事记(时间线) 5月1日消息,超融合时序数据库 MatrixDB 在 TPC ...

  7. 国产数据库年终大盘点

    作者 | 马超 编辑 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 去"IOE"这个概念,最早由王坚院士在刚刚加入阿里时提出,其目标是将IBM 的小型机.Oracle数 ...

  8. 腾讯云:新基建大潮下国产数据库的探索与思考 | 云·创课程实录

    主讲人 | 腾讯云数据库副总经理-王义成 张康 编辑整理 量子位编辑 | 公众号 QbitAI 6月中旬起,量子位发起了以数据库为主题的系列公开课,邀请来自腾讯云.浪潮.蚂蚁集团等头部企业的数据库技术 ...

  9. PDMan-2.1.3 发布:用心开源,免费的国产数据库建模工具

    2019独角兽企业重金招聘Python工程师标准>>> 一.软件介绍 PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择.支持Windo ...

最新文章

  1. DRV8825步进电机驱动控制模块以及双轴平台
  2. tia v15 添加项目_作为一名机器人集成项目的电气工程师,你及格吗?
  3. DCMTK:DcmDecimalString类的测试程序
  4. 关于VCP(Virtual Com Port)拓展的调试经历(一)
  5. 设置最大值_Power BI经典技巧:在走势图上标注最大值、最小值…
  6. mysql的常用命令总结
  7. 无代码来了,还要程序员吗?
  8. mysql 删除重复数据,需要给子查询的表,起一个别名
  9. linux设置ipsan_linux 配置IPSAN存储
  10. wps宏插件.zip_这个特别的 WPS 版本,我们想推荐给你
  11. 企业微信机器人定时发送信息
  12. 算法设计与分析: 3-4 多重幂计数问题
  13. 详细设计的工具——PAD图
  14. FOR ALL ENTRIES IN的用法
  15. ffmpeg命令行录制一个具有非IDR性质的I帧的视频
  16. C语言程序设计 使用结构体类型处理组合数据——用户自定义数据类型
  17. Excel数据分析:从入门到精通
  18. SpringBoot 常见配置注解使用:
  19. 暴风雨中的幸福——记我敬爱的米老师
  20. Xilinx Alveo加速卡开发环境搭建

热门文章

  1. error expected linebreaks to be ‘lf‘ but found ‘crlf‘ linebreak-style问题解决
  2. 关于微软黑屏的延伸?
  3. 瑞星升级提示网络连接失败网络配置后重试(12007) 解决办法
  4. android one x3怎么样,才30多万,6/7座随便选,理想ONE比X3GLC更家用
  5. 力扣 2154. 将找到的值乘以 2
  6. FDTD Solutions v2.2 1CD+ASAP
  7. 雅虎市值_雅虎! 挖掘其内在的吉普赛人
  8. DirectX9 SDK Samples(26) PixelMotionBlur Sample
  9. 做副业月薪10K+,工作效率翻倍!Python是个什么宝藏?
  10. 关于PD4ML解决中文乱码的问题