本文介绍PolarDB MySQL版与RDS MySQL在相同场景中OLTP负载性能的对比结果。
相对RDS MySQL,PolarDB MySQL版在如下几方面进行了优化,提高了集群整体性能:
- 采用了领先硬件技术,包括使用3DXpoint存储介质的Optane存储卡、NVMeSSD和RoCE RDMA网络等。
- 基于新的硬件,实现了一整套在用户态运行的IO和网络协议栈,获得了更高的性能、更低的延迟。
- 通过锁优化、IO路径优化、针对大表优化等内核层面的优化,实现了并发场景下的更优性能。
说明 测试所用的产品为:
- 不同规格的PolarDB MySQL版集群版独享规格集群。
- 不同规格的RDS MySQL高可用版独享型规格实例(本地盘)。
注意事项
在您对PolarDB和RDS进行性能对比前,请了解以下注意事项,以便能获得比较准确、合理的性能对比结果:
- 使用相同规格配置的PolarDB和RDS进行性能对比。
- 使用相同版本的PolarDB和RDS进行性能对比。
因为不同版本的实现机制不一样,例如PolarDB MySQL版8.0.1针对多核数CPU做优化,单独抽象出来Log_writer、log_flusher、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 MySQL版5.7对比RDS MySQL 5.7

PolarDB MySQL版5.6对比RDS MySQL 5.6
