本文介绍POLARDB和RDS进行性能对比的相关注意事项。

在您对POLARDB和RDS进行性能对比前,请了解以下注意事项,以便能获得比较准确、合理的性能对比结果。

  • 使用相同规格配置的POLARDB和RDS进行性能对比。
  • 使用相同版本的POLARDB和RDS进行性能对比。

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

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

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

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

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