近年来,云数据库市场日趋繁荣,进入百花齐放、百家争鸣的时代。领先的云计算厂商相继推出了自己的数据库产品,尤其是亚马逊的Aurora、阿里云的PolarDB、华为云的GaussDB等。作为一名MySQL技术专家,我编写了一系列MySQL书籍《MySQL技术大全:开发, 优化与运维实战》。很多打算上云企业的DBA或者架构师都会问,市面上的各种数据库如何选择。我认为首先是稳定性,其次是性能。今天,笔者将对PolarDB、OceanBase、Aurora、GaussDB、TDSQL-C这五款数据库产品进行开箱性能测评,供企业选型参考。评测概览为了方便读者更好的理解本次性能评测的整体结论,先给出测试结果及相关结论的概览:在小规模实例(8C)的性能测试中,无论是在在计算密集型场景或者I/O密集型场景中,在各种测试负载下,PolarDB的整体测试性能是最好的。对于大型实例(64C),数据库实例之间的性能差距更加明显。值得一提的是,Aurora的写入性能在测试负载下明显更差。总体而言,PolarDB的性能相比Aurora、TDSQL-C、Oceanbase、GaussDB等同类竞品也有显着优势。数字。大型实例(64C)性能测试结果图。小型实例(8C)性能测试结果压力测试压力测试涉及的数据库包括阿里云的PolarDB数据库、亚马逊云的Aurora数据库、蚂蚁集团100%控股数据库OceanBase数据库、华为云的GaussDB数据库、腾讯云的TDSQL-C数据库。参与审核的都是MySQL兼容版本。压测环境为了保证压测结果的公平性,五个数据库均部署在各自数据库厂商的云服务器上,每个数据库的服务器实例规格相同。云服务器实例规格为8C64GB和64C512GB,MySQL8.0,一主一从。但是由于OceanBase数据库的规格限制,实际上使用的云服务器实例规格是62C400GB。在实例规格相同的前提下(OceanBase使用62C400GB规格除外),我们在各自的云服务器上使用开箱即用的配置。压测配置我们将采用计算密集型和I/O密集型两种配置方式对5个数据库进行压测,并使用配置严格一致的shell脚本进行压测。计算密集型配置模式对于计算密集型配置模式,当对5个数据库进行压测时,最终的结果信息会以如下格式输出。案例数据库名称;数据表的数量;数据表大小(每张表的数据条数);;最大线程数;最小线程数;云服务器实例名称;QPS对应线程数;QPS对应线程数;这里,对于上面的输出结果的格式简单说明一下:case:表示对数据库进行压力测试时使用的数据库读写模式。主要取值有:oltp_read_only(只读模式)、oltp_read_write(读写模式)、oltp_write_only(只写模式)。数据库名称:对数据库进行压力测试时指定的数据库名称。例如,当我们使用计算密集型配置方式对数据库进行压力测试时,指定的数据库名称为tpk_s。数据表数量:数据库压力测试时指定的数据库中数据表的数量。比如我们使用计算密集型的配置方式对数据库进行压力测试时,每个数据库中指定的数据表个数为10个。数据表大小:指定对数据库进行压力测试时每个数据表中数据的大小.例如,当我们使用计算密集型配置方式对数据库进行压力测试时,每个数据表中的数据大小为10,000,000。线程数:这个比较好理解。在对数据库进行压力测试时,指定使用多少线程开始压力测试。比如我们采用计算密集型的配置方式对数据库进行压测,在8C64GB规格下,最大线程数为128,最小线程数为1。在64C512GB规格下,最大线程数为线程数为300,最小线程数为1。云服务实例名称:数据库所在的云服务器实例名称。请注意,这不是压力测试脚本所在的云服务器实例的名称。线程数对应的qps:按照格式分别输出最大线程数和最小线程数对应的QPS。I/O密集型配置模式I/O密集型配置模式,对5个数据库进行压测,最终结果信息会以如下格式输出。案例数据库名称;数据表的数量;数据表大小(每张表的数据条数);;最大线程数;最小线程数;云服务器实例名称;QPS对应线程数;QPS对应线程数;可以看到,使用I/O密集型配置的压测输出格式和计算密集型配置是一样的。但在实际压测过程中,两者的配置信息略有不同。计算密集模式的数据库名称为tpk_s,I/O密集配置模式的数据库名称为tpk_l。8C64GB规格下计算密集模式下数据表大小为10000000,I/O密集配置模式下数据表大小为40000000。64C512GB规格下,数据表大小为300000000,下面是综合对比结果。各产品PolarDB、OceanBase、Aurora、GaussDB和TDSQL-C的具体测试见文末。有兴趣的小伙伴可以参考对比。8C64GB规格的综合对比是为了更直观的对比各数据库在8C64GB规格下的性能,这里我将8C64GB规格下的压测结果数据进行整合对比,如下图。1)oltp_read_only模式压测对比数据库128线程QPS1线程QPSPolarDB95863.565184.38OceanBase61068.591953.32Aurora69933.453183.13GaussDB85244.765638.32TDSQL-C94343.164091.835(2)oltp_read_write模式压测对比数据库128线程QPS1线程QPSPolarDB82701.534809.97OceanBase39874.511801.23Aurora42649.672465.01GaussDB58522.774896.80TDSQL-C61997.332661.6075(3)oltp_write_only模式压测对比数据库128线程QPS1线程QPSPolarDB96784.144617.05OceanBase31767.131648.32Aurora35598.101484.75GaussDB58697.922216.81TDSQL-C53867.951799.2725从我对Acomprehensivecomparisonofthecalculation-intensive5个数据库的压力测试结果表明,PolarDB在oltp_read_only模式、oltp_read_write模式和oltp_write_only模式下启用1个或128个线程进行压力测试时性能最佳。I/O密集型压测结果对比(一)oltp_read_only模式压测对比数据库128线程QPS1线程QPSPolarDB67105.082943.15OceanBase33997.11684.21Aurora30695.901056.77GaussDB24423.911927.34TDSQL-C48069.14069.15OceanBase33997.11684.21Aurora30695.901056.77GaussDB24423.911927.34TDSQL-C48069.14420数据库32testolmodertSQL压力对比-C48069.142032.21QPS1线程QPSPolarDB61093.902891.23OceanBase29325.761582.34Aurora21751.73683.03GaussDB23178.851703.34TDSQL-C38388.891667.94(3)oltp_write_only模式压测对比数据库128线程QPS1线程QPSPolarDB61438.082602.82OceanBase29876.211503.22Aurora23290.391001.32GaussDB41209.881638.43TDSQL-C40414.651559.45从综合对比5个数据库的I/O密集型压力测试结果,无论是oltp_read_only模式、oltp_read_write模式还是oltp_write_only模式,PolarDB的性能都是最优的。64C512GB规格综合对比为了更直观的对比各数据库在64C512GB规格下的性能,这里我将64C512GB规格下的压测结果进行整合对比,如下图。计算密集型压测结果对比(1)oltp_read_only模式压测对比数据库300线程QPS1线程QPSPolarDB583481.915299.95OceanBase210599.671979.00Aurora460661.523953.16GaussDB324943.025238.16TDSQL-C345769.064102.13(2)oltp_read_write模式压测对比数据库300线程QPS1线程QPSPolarDB459306.284998.68OceanBase161787.021725.00Aurora161193.672330.50GaussDB231511.893528.90TDSQL-C259070.852648.34(3)oltp_write_only模式压测对比数据库300线程QPS1线程QPSPolarDB415477.315025.55OceanBase102735.321636.21Aurora52484.711282.10GaussDB195454.502077.85TDSQL-C122732.321799.2725从我对Acomprehensivecomparisonofthecalculation-intensivepressuretestresultsofthefivedatabasesshowsthatwhetherinoltp_read_onlymode,oltp_read_writemode,oroltp_write_onlymode,PolarDBhasthebestperformance.I/O密集型压测结果对比(1)oltp_read_only模式压测对比数据库300线程QPS1线程QPSPolarDB379448.393205.95OceanBase186231.851663.59Aurora162073.88908.75GaussDB202102.542438.24TDSQL-C130938.232203.23(2)oltp_read_write模式压测对比数据库300线程QPS1线程QPSPolarDB323182.933147.55OceanBase142723.881592.08Aurora75080.03807.78GaussDB164403.192243.14TDSQL-C112711.661782.34(3)oltp_write_only模式压测对比数据库300线程QPS1线程QPSPolarDB335549.533751.35OceanBase99543.001447.24Aurora26616.15748.74GaussDB152426.142254.31TDSQL-C72023.231582.23在IntheI/O-intensivepressuretestoflarge-scaleinstances,PolarDBalsohasthebesttestperformance,anditsadvantagesoverotherproductsaremoreobviousthanthoseofsmall-scaleinstances.ThefollowingarethedetailedtestresultsofPolarDB,OceanBase,Aurora,GaussDBandTDSQL-C.Whenthepressuretestresultsarestrictlyconsistentwiththepressuretestenvironmentandpressuretestconfiguration,westartedtotestPolarDB,OceanBase,Aurora,GaussDBandTDSQL-CDatabasesarepressuretestedseparately.Isortedouttheresultdataobtainedfromthefinalpressuretest,andthetestresultsaregivenbelowaccordingtothespecificationsof8C64GBand64C512GB.8C64GB规格测试结果PolarDB压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1010000000128195863.565184.38oltp_read_write1010000000128182701.534809.97oltp_write_only1010000000128196784.144617.05(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1040000000128167105.082943.15oltp_read_write1040000000128161093.902891.23oltp_write_only1040000000128161438.082602.82OceanBase压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1010000000128161068.591953.32oltp_read_write1010000000128139874.511801.23oltp_write_only1010000000128131767.131648.32(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1040000000128133997.11684.21oltp_read_write1040000000128129325.761582.34oltp_write_only1040000000128129876.211503.22Aurora压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1010000000128169933.453183.13oltp_read_write1010000000128142649.672465.01oltp_write_only1010000000128135598.101484.75(2)I/O-intensivepressuretestresultsreadandwritemodetablenumbertablesizemaximumnumberofthreads最小线程数128线程QPS1线程QPSoltp_read_only1040000000128130695.901056.77oltp_read_write1040000000128121751.73683.03oltp_write_only1040000000128123290.391001.32GaussDB压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1010000000128185244.765638.32oltp_read_write1010000000128158522.774896.80oltp_write_only1010000000128158697.922216.81(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1040000000128124423.911927.34oltp_read_write1040000000128123178.851703.34oltp_write_only1040000000128141209.881638.43TDSQL-C压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1010000000128194343.164091.835oltp_read_write1010000000128161997.332661.6075oltp_write_only1010000000128153867.951799.2725(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数128线程QPS1线程QPSoltp_read_only1040000000128148069.142032.22oltp_read_write1040000000128138388.891667.94oltp_write_only1040000000128140414.651559.4564C512GB规格测试结果PolarDB压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数300threadsQPS1threadQPSoltp_read_only10100000003001583481.915299.95oltp_read_write10100000003001459306.284998.68oltp_write_only10100000003001415477.315025.55(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only103000000003001379448.393205.95oltp_read_write103000000003001323182.933147.55oltp_write_only103000000003001335549.533751.35OceanBase压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only10100000003001210599.671979.00oltp_read_write10100000003001161787.021725.00oltp_write_only10100000003001102735.321636.21(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only10300000000301186231.851663.59oltp_read_write10300000000301142723.881592.08oltp_write_only1030000000030199543.001447.24Aurora压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only10100000003001460661.523953.16oltp_read_write10100000003001161193.672330.50oltp_write_only1010000000300152484.711282.10(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only103000000003001162073.88908.75oltp_read_write10300000000300175080.03807.78oltp_write_only10300000000300126616.15748.74GaussDB压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only10100000003001324943.025238.16oltp_read_write10100000003001231511.893528.90oltp_write_only10100000003001195454.502077.85(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only103000000003001202102.542438.24oltp_read_write103000000003001164403.192243.14oltp_write_only103000000003001152426.142254.31TDSQL-C压测结果(1)计算密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only10100000003001345769.064102.13oltp_read_write10100000003001259070.852648.34oltp_write_only10100000003001122732.321799.2725(2)I/O密集型压测结果读写模式表数目表大小最大线程数最小线程数300线程QPS1线程QPSoltp_read_only103000000003001130938.232203.23oltp_read_write103000000003001112711.661782.34oltp_write_only10300000000300172023.231582.23最后,希望这次对于云原生数据库的压测结果能够为大家选型云原生数据库时提供一点点帮助
