性能
首先最重要的,是云数据库的读写性能。我在规划实例的配置时,主要考虑下面 2 点:
首先,云数据库要使用 SSD 硬盘,这样能够保证数据库服务器的 IO 尽量的快
其次,云数据库的内存要尽可能大,这样有尽可能多的数据能够被缓存,提高读写速度
因此我选择的数据库配置如下:硬盘 300GB SSD,内存 8GB 左右。由于每个云平台提供的配置都不相同(腾讯云的内存和磁盘比例是限定的,UCloud 的内存没有 8G 等等),我在三个云平台上分别申请了如下配置的云数据库进行性能测试:
测试配置
由于实际情况下,云数据库一般是通过云服务器进行访问的,因此我在这 3 个平台分别申请了配置差不多的云主机,在上面运行性能测试。我申请的云主机的操作系统都是 64 位 CentOS 6.5,具体的配置如下:
主机配置
现在比较流行的测试数据库工具是 sysbench,为了和实际使用的情况吻合,我对 sysbench 做了参数上的修改。
一般来说,读操作要远远多于写操作,并且有很多操作是需要范围查找和排序的,所以我在测试中提高了读操作的比例,特别是提高了范围查找和排序的比重。
同时,对于写操作,稍微提高了 update 操作的比例。最终运行的测试中,每一个事务的读操作和写操作的比例是 6:1 左右。为了模拟项目启动之后的场景,我的 sysbench 测试集的数据量是总共 20 张表,每张表 200 万行数据,开启 32 个线程,并行向数据库发送事务请求,共运行 30 分钟。下面是我观察到的结果:
测试数据
把这个测试结果做成图表是这个结果:
测试结果
这个性能测试结果大大出乎我的意料,虽然 UCloud 的数据库界面看上去和阿里云和腾讯云相比比较朴实,产品介绍中也介绍的相对简单,但是,性能上的优势让我吃惊。说实话,自己测试之前,我没想到 UCloud 有如此大幅领先的性能。从测试结果分析,UCloud 比阿里云高了 422%,比腾讯云高了 297%。而且,这还是在 UCloud 云数据库的内存不如其它 2 家大的情况下的结果(UCloud:6G 内存,阿里云和腾讯云:8G 内存)。
这个数据让我对 UCloud 的 SSD 云数据库性能十分动心,要知道,这个是我没有做过任何调优,开箱即用的配置,完全符合我对于云数据库“快速部署,性能满意”的期望。
以下是测试结果的截图,从上到下分别是 UCloud 的 UDB,阿里云 RDS 和腾讯 CDB:
UCloud 的 UDB
阿里云 RDS
腾讯云 CDB
价格
看过了性能之后,我又顺便分析了一下价格,貌似阿里云和 UCloud 的价格是线性关系的。阿里云根据内存,CPU 和磁盘定价,而 UCloud 根据内存和磁盘定价,CPU 免费。腾讯云的配置只有几档,每一档根据内存和磁盘来定价,内存和磁盘的排列是固定的,不是简单的线性关系。因此,我计算出了阿里云和 UCloud 的价格因素的计算常数,然后以腾讯云的配置为基础,分别推算了 3 个厂商在同等条件下的价格,可以得到三个厂商的定价趋势图如下:
价格比较
其中,腾讯云的价格是最便宜的,只是磁盘和内存的比例是固定的;UCloud 的价格比腾讯云略贵,而阿里云比其它两家要高出40% 左右的价钱。这可能是因为阿里云主备架构的关系;不过,我发现 UCloud 的普通版 UDB 和高可用版 UDB 几乎是一个价钱,也就是说,如果考虑主备架构的高可用版云数据库,UCloud 的高可用版实例的价格比阿里云要低 40%。仔细看了下,貌似 UCloud 的高可用数据库最近在进行促销,所以才会这么划算,也就是说趁活动期间购买的话可以省一大笔钱。可惜我们用的是腾讯云……
总结
阿里云的文档非常全,而且详细。很多信息都可以通过文档来获取。而且它的 MySQL 在线管理工具很强大,就是建立数据库的时候比较麻烦,还是要去界面上申请建立数据库,价格较贵。
腾讯云虽然没有阿里云的 RDS 做的那么完善,也还算易用。他们使用 PHPMyAdmin 来管理数据库,对于熟练这套工具的开发人员可能比较容易上手。价格较便宜。
UCloud 云数据库测出的 TPS 和 QPS 性能远高于业内平均水平。而且产品易用性好,价格适中。
综上所述,性价比最高的云数据库是 UCloud 的 UDB。
额外再提一句,对于名列在程序员最讨厌两件事之一的“写文档”,在查看 3 个厂商的数据库产品介绍时,感觉阿里云和腾讯云的产品介绍做的很好,里面有各种解决方案的架构,非常贴心。而且云数据库和云主机自建数据库的区别也讲得很直观;而 UCloud 的 UDB 介绍比较简单,还需要进一步提高。