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



2. GreatSQL的优势及展望
增加地理标签功能。当在多机房部署MGR时,可以保证每个机房中至少有一个节点都参与事务认证,确保该节点总有最新事务,这可用于解决多机房数据同步的问题。
采用全新的流控机制,流控阈值计算更合理、细致,不会出现频繁性能抖动问题。
支持AFTER模式下多数派写机制。发生网络分区时,只要多数派节点已经回放完毕,集群就可以继续处理新的事务,依然可以保障集群的高可用性。 解决磁盘空间爆满时导致MGR集群阻塞的问题。当发现某节点磁盘空间满了,就会让这个节点主动退出集群,避免像MySQL社区版那样整个集群被阻塞的问题。 解决多主模式下或切主时可能导致丢数据的问题。调整了事务认证处理流程,改成放到applier queue里按照paxos顺序处理,这就解决了在多主模式下或切主时可能导致丢数据的问题。 解决节点异常退出集群时导致性能抖动的问题。优化paxos通信机制,发生异常时只会产生约1~3秒的性能小抖动,最差时TPS可能只损失约20%~30%。而MySQL社区版本可能会造成约20~30秒的性能抖动,最差时TPS可能有好几秒都降为0。下面两个图非常明显体现了GreatSQL针对这种情况所做的优化。


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


优化事务认证队列清理算法。MySQL社区版本中,认证数据库采用类似全表扫描的方式,效率极低。优化后,采用基于类似索引机制,有效解决清理效率低、性能抖动大的问题。 提高MGR吞吐量。经过优化,有效提升MGR的吞吐量,并减少网络延迟对访问性能的影响。 提升一致性读性能,并降低从库只读延迟。
优化InnoDB事务锁机制,将原来的红黑树改为无锁哈希结构,在高并发场景中有效提升事务并发性能至少10%以上。

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

3. GreatSQL VS MySQL社区版
| 特性 | GreatSQL | MySQL社区版 |
|---|---|---|
| 地理标签 | ✅ | ❎ |
| 全新流控算法 | ✅ | ❎ |
| InnoDB并行查询优化 | ✅ | ❎ |
| InnoDB事务锁优化 | ✅ | ❎ |
| 网络分区异常应对 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️ |
| 大事务处理 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️ |
| 节点异常退出处理 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️ |
| 一致性读性能 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️ |
| 提升MGR吞吐量 | ⭐️⭐️⭐️⭐️⭐️ | ⭐️ |
| 多写模式下可能丢数据 | ⭐️⭐️⭐️⭐️⭐️ | / |
| 单主模式下切主丢数据 | ⭐️⭐️⭐️⭐️⭐️ | / |
| MGR集群启动效率 | ⭐️⭐️⭐️⭐️⭐️ | / |
| 集群节点磁盘满处理 | ⭐️⭐️⭐️⭐️⭐️ | / |
| TCP self-connect问题 | ⭐️⭐️⭐️⭐️⭐️ | / |
近期更新的文章:
《最近碰到的问题》
《Java 18发布:甲骨文公司已开始将Java纳入其软件许可审计》
文章分类和索引:
文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




