磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?

上次发了数据库评测,没想到被腾讯云官方转载了。感觉很开心,决定建个头条号来玩一下,欢迎大家一起学习探讨。

最近在学习数据库相关知识,经常跟一个在某金融公司做DBA的大学朋友交流问题。听说他们公司最近在使用云数据库,我立马来了兴趣,以前只听说过云主机,没想到数据库这种产品也可以在云上买。正好最近在学习使用sysbench,索性我就买了腾讯云数据库(因为他们家的可以按量付费,用完了就释放掉哈哈),配合自己购买的腾讯云主机进行一个对比测试。下面就贴出测试过程和结果,仅供大家参考。

测试过程

在本次测试中,我使用sysbench对三种配置分别进行oltp场景的基准测试。sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实。这里的Oltp(On-Line Transaction Processing)即面向事务的处理过程,也是mysql的主要应用场景,在这里我们选用sysbench的读写混合脚本进行测试。

下面给出本次测试的详细配置:
在这里插入图片描述

磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?
我们使用sysbench创建20张表,每个表插入10000000条数据。每个配置的下测试1200秒,每10秒进行一次采样,重复两次取平均值作为参考。

Sysbench指令如下:sysbench --db-driver=mysql --mysql-user=root --mysql-password=xxxx --mysql-db=test_sysbench --table_size=10000000 --tables=20 --threads=100 --events=0 --time=1200 --report-interval=10 /usr/share/sysbench/oltp_read_write.lua run

在测试自建数据库的时候我们需要安装MySQL、安装Sysbench,具体的方法可以参考相关系统的教程。需要注意的是,在使用云数据库的时候,需要一台机器远程连接,为了排除网络波动对测试结果的影响,这里我使用的就是测试用的CVM,将CVM和云数据库放置在同一网络区域下(同一VPS下),则可以通过内网IP建立连接,此时的网络不会成为测试瓶颈。此外我们要注意,在测试的时候保证CVM的配置大于等于云数据库的配置,可以先讲CVM测试完,提升到8核32G再去测试云数据库。

我们测试的配置主要为4核8G、8核32G三种配置,分别对比不同配置下MySQL云数据库和同配置CVM上的性能指标,主要对比的指标有QPS、TPS。

测试结果

漫长的测试完成之后,就是结果揭晓的时刻了。我们首先来看一下CVM4核8G的测试结果:

​​磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?_第1张图片

磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?
从测试结果可以看出,MySQL5.7的性能还是非常惊艳的,在混合读写的场景下,随着并发数的增加,QPS保持着上升趋势,在200并发的时候QPS高达40000,TPS也保持在2020,随后随着并发数的增加TPS迅速降低。

我们再来看一下,同等配置下的腾讯云MySQL是怎样的表现:
磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?_第2张图片
磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?
卧槽,20并发的时候QPS已经到了惊人的55000,在50的时候更是高达70000,基本是秒杀啊,我们来直观的看一下不同并发下二者的QPS对比。
磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?_第3张图片
可以看到,差距还是很明显的,在20-100并发的区间,云数据库基本是自建数据库性能的两倍以上。但在500并发的时候,二者的性能衰减都比较明显。那么接下来我们提升一下配置,看看8核32G配置下二者的QPS表现对比。
磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?_第4张图片
磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?
可以看出,在8核32G性能下,趋势变化与4核基本相同,但在500并发下,云数据库依然保持了60000+的QPS,TPS保持在2091,而同配置下的自建Mysql此时已经降到了78。

测到这里,我们可以得出结论:在并发数较低的情况下(并发数50以内),MySQL的混合读写性能保持在较高的线性增长,在50线程时,云数据库MySQL的性能达到峰值,高达11w的QPS,5480的TPS,在50-200并发数云MySQL和自建MySQL变化平缓,自建MySQL稳定在4w-5w,云MySQL维持在10w-11w,在并发数达到500时二者性能下降明显。

总的来说,在200以内并发云数据库MySQL性能达到了同等配置自建数据库的两倍,看来腾讯云的研发小哥哥们还是做了大量的参数优化来提升数据库对硬件配置的性能利用。

在测试中有一个很惊喜的发现,使用腾讯云MySQL数据库自带的性能监控指标就可以直观的看历史监控结果啦。

怎么样,很直观有没有,高大上有没有。除了QPS和TPS之外还有其他很多很多参数指标,可以随意拖动时间,可以任意合并数据,效果如下:

哇,比起一个个记录测试数据再画图,使用腾讯云数据库的监控真的方便太多了。朋友告诉我除了监控,还有备份回档、监控、快速扩容、数据传输这么多特性。我好奇的上官网比较了一下我测的这两种配置的云主机和云数据库价格对比:

4核8G云主机: 10M带宽 488元/月 、200M带宽9380元/月

4核8G云数据库:652元/月 默认200M带宽

8核32G云主机:200M带宽 200G磁盘容量 9550元/月

8核32G 云数据库:200M带宽 200G磁盘容量 2317元/月

原来云数据库在高出这么多性能,多了一堆特性功能之后,居然还拥有这么高的性价比,8核32G同等带宽的情况下云主机价格居然是云数据库的4倍。所以推荐需要专业数据库服务的同学,尤其是对性能和带宽要求较高的同学,购买腾讯云数据库可以帮你们省一大笔钱哦。对于跟我一样穷到吃土也想使用学习数据库的同学,强烈建议使用按量付费。反正每小时几块钱,价格划算童叟无欺。

后期还会进行其他数据库的相关测评及知识分享,欢迎大家多多关注哦。

你可能感兴趣的:(磊哥测评之数据库篇:自建数据库VS云数据库,到底怎么选?)