简介:云原生数据库成为云厂商的重要发展方向,阿里云、百度智能云、腾讯云均先后发布了自研的云原生数据库
近些年,云原生数据库成为云厂商的重要发展方向,阿里云、百度智能云、腾讯云均先后发布了自研的云原生数据库。笔者认为云原生数据库具有更高的性价比、更极致的弹性,可以满足业务发展的不同阶段和负载场景的需求,也是云数据库从托管开源数据库到原生化自研的必然发展。
笔者一直非常深度关注、调研和使用云数据库,其中性能是关注的重点之一。一方面性能是最终成本的重要影响因素,更好的性能,通常意味着使用更少的资源支撑更高的业务量,从而降低整体成本。另外,性能还意味着在极端场景下,数据库的上限支撑能力。所以,近期对各个云数据库厂商做了一个较为系统的性能对比,供开发者和企业在云数据库选型时的参考。
笔者在进行大量测试之后,对主要的云厂商分别选择了“主流规格”(适合生产环境配置的)进行了对比,综合性能结果是阿里云 PolarDB > 百度智能云 GaiaDB > 腾讯云 TDSQL-C,详细测试数据对比见下图:
(蓝色:百度智能云 GaiaDB 红色:腾讯云 TDSQL-C 绿色:阿里云 PolarDB)
只读场景
读写场景
只写场景
厂商 | 虚机客户端 | 云原生数据库信息 |
---|---|---|
阿里-PolarDB | 地域/可用区:华北2(北京)客户端:32核64GB实例镜像:CentOS 8.2 64位网络:云服务器 ECS 和云原生数据库集群在同一私有网络(VPC) | 内核版本:mysql8.0.2实例类型:独享型实例规格:2C8G、4C16G、8C32G、8C64G、16C128G、32C256G节点个数:一主一只读 |
腾讯-TDSQL-C | 地域/可用区:北京客户端:32核64GB客户端操作系统:CentOS 8.2 64位网络:云服务器 CVM 和云原生数据库集群在同一私有网络(VPC) | 内核版本:mysql8.0实例类型:独享型实例规格:2C8G、4C16G、8C32G、8C64G、16C128G、32C256G节点个数:一主一只读 |
百度-GaiaDB | 地域/可用区:华北-北京客户端:32核64GB客户端操作系统:CentOS 8.2 64位网络:云服务器BCC和云原生数据库集群在同一私有网络(VPC) | 内核版本:mysq8.0.18实例类型:独享型实例规格:2C8G、4C16G、8C32G、8C64G、16C128G、32C256G节点个数:一主一只读 |
性能测试的指标包括:
#准备数据:
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 oltp_read_write prepare
#运行workload
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 —report-interval=1 oltp_read_write run
#清理
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 oltp_read_write cleanup
#准备数据:
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 oltp_read_only prepare
#运行workload
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 —range_selects=0 —skip-trx=1 —report-interval=1 oltp_read_only run
#清理
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 —range_selects=0 oltp_read_only cleanup
#准备数据
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 oltp_write_only prepare
#运行workload
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 —report-interval=1 oltp_write_only run
#清理
sysbench —db-driver=mysql —mysql-host=XXX —mysql-port=XXX —mysql-user=XXX —mysql-password=XXX —mysql-db=sbtest —table_size=25000 —tables=250 —events=0 —time=600 —threads=XXX —percentile=95 oltp_write_only cleanup
在测试过程中的一些限制进行补充说明,供参考。
1. 综合性能排名:阿里云 > 百度智能云 > 腾讯云:
2. 只写场景:
只写性能百度与阿里差距较小,从最近百度发布的《核心技术演进和解析》分析,百度智能云 GaiaDB 在写链路方面做了较多优化,包括Quorum协议、高性能网络协议等。
以下是笔者在分析性能过程中翻阅的网络材料,仅供参考: