社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

面向金融级应用的GreatSQL开源,一文对比MySQL

OSC开源社区 • 3 年前 • 577 次点击  

GreatSQL 社区宣布,在经过几个月的紧张筹备后,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 社区版存在什么风险

万里数据库核心研发团队深入研究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社区版

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


GreatSQL 代码现已上传到 Gitee,项目地址:https://gitee.com/GreatSQL/GreatSQL
资讯来源:https://mp.weixin.qq.com/s/cI_wPKQJuXItVWpOx_yNTg

END



“要源码上门自取”?
关注视频号“开开开源”
带你了解更多开源知识

觉得不错,请点个在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119086
 
577 次点击