本文介绍PolarDB MySQL引擎与RDS MySQL在相同场景中OLTP负载性能的对比结果。

相对RDS MySQL,PolarDB MySQL引擎在如下几方面进行了优化,提高了集群整体性能:
  • 采用了领先硬件技术,包括使用3DXpoint存储介质的Optane存储卡、NVMeSSD和RoCE RDMA网络等。
  • 基于新的硬件,实现了一整套在用户态运行的IO和网络协议栈,获得了更高的性能、更低的延迟。
  • 通过锁优化、IO路径优化、针对大表优化等内核层面的优化,实现了并发场景下的更优性能。
说明 测试所用的产品为:
  • 不同规格的PolarDB MySQL引擎集群版独享规格集群。
  • 不同规格的RDS MySQL高可用版独享型规格实例(本地盘)。
具体测试方法,请参见性能测试方法(OLTP)

注意事项

在您对PolarDB和RDS进行性能对比前,请了解以下注意事项,以便能获得比较准确、合理的性能对比结果:
  • 使用相同规格配置的PolarDB和RDS进行性能对比。
  • 使用相同版本的PolarDB和RDS进行性能对比。

    因为不同版本的实现机制不一样,例如PolarDB MySQL引擎8.0.1针对多核数CPU做优化,单独抽象出来Log_writer、log_fluser、log_checkpoint、log_write_notifier等线程,但在CPU核数较少的情况下性能则不如MySQL 5.6或MySQL 5.7。不推荐使用PolarDB MySQL引擎5.6版本和RDS MySQL 5.7或MySQL 8.0进行对比,因为PolarDB MySQL引擎5.6的优化器比较旧,不如新版本。

  • 推荐使用模拟线上压力的场景进行实际性能对比,或者使用Sysbench进行对比,这样获得的数据更接近线上实际场景。
  • 在对比读性能的时候,不推荐您使用单条SQL进行比较。

    因为PolarDB是计算存储分离的架构,所以单条语句有网络延迟的影响,导致读性能不如RDS。但是线上数据库的缓存命中率基本都在99%以上,因此只有第一次的读会调用I/O,因此读取性能会降低,后续数据都在缓存池(Buffer Pool)中,并不需要调用I/O,因此性能是一样的。

  • 在对比写性能的时候,同样不推荐您使用单条SQL进行比较,推荐模拟线上环境进行压力测试。

    如果要对比RDS性能,请使用PolarDB(主节点+只读节点)和RDS(主实例+半同步的只读实例)进行对比。这是因为PolarDB的架构在写入数据的时候默认采用Quorum机制,即写入数据时默认写入到三副本里面的大多数(在三个副本中的两个或两个以上写入成功,就认为写操作成功了)。PolarDB已经在存储层面做了数据冗余,并保证三副本强同步高可靠,因此使用RDS MySQL的半同步复制(而不是异步复制)进行对比更合理。

PolarDB MySQL引擎8.0.1对比RDS MySQL 8.0

PolarDB 8.0.1 对比 RDS 8.0

PolarDB MySQL引擎5.7对比RDS MySQL 5.7

PolarDB MySQL 5.7 对比 RDS MySQL 5.7

PolarDB MySQL引擎5.6对比RDS MySQL 5.6

PolarDB MySQL 5.6 对比 RDS MySQL 5.6