MySQL|面向金融级应用的 GreatSQL 正式开源( 二 )

  • 支持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社区版

    【MySQL|面向金融级应用的 GreatSQL 正式开源】GreatSQL 代码现已上传到 Gitee 。