云数据库VS自建数据库,到底该如何抉择?

一 前言有赞的基础架构使用了UCloud的基础服务,我们有相当比例的数据库是UCloud的RDS(一部分使用云RDS,一部分使用购买他们的物理服务器自建数据库)。
近期我们了解到 UCloud 推出一款基于快杰主机的UDB实例,因为他们在整机架构上针对CPU,OS内核 ,磁盘,网络结构有比较大的改进和增强,数据库性能也有很大的性能提升。
所以本文写写针对快杰UDB和基于快杰自建实例的性能测试对比,为我们以后的实例选型做个技术参考。
什么是快杰?其实快杰就是云主机,不是单独的物理服务器,基于物理机做了一层分布式存储系统,利用CPU 网络等硬件技术,优化OS内核,它具有以下特性:
计算、存储与网络性能卓越的旗舰云主机。支持AMD第二代EPYCCPU(2.9GHz主频)或IntelCascadelakeCPU(2.5GHz主频)最大网络性能达到1000WPPS,最大存储性能达到120WIOPS。规格灵活,最高支持96核768G的超大规格实例。在Web服务,游戏服务,数据库,数据分析处理等绝大多数场景表现出色,性价比极佳。从官网上来看一个比较重要的特性是磁盘空间可以拓展到32T ,这个算是比较吸引我们的一个特性,运维数据库的过程中经常遇到空间不足的情况,必须迁移实例,调整到其他机器上,成本比较高。
本文测试的是基于Intel CPU的快杰机型,(和一些硬件的朋友聊 AMD指令集对MySQL的运行可能和Intel指令集合的结果不一样。)
二 环境准备UCloud的 数据库版本 MySQL 5.7.25。
RDS 实例选择选用他们默认的 my.cnf 模板。核心参数配置如下:
|binlog_format|ROW||innodb_adaptive_flushing|ON||innodb_adaptive_hash_index|ON||innodb_buffer_pool_instances|8||innodb_buffer_pool_size|8589934592||innodb_file_per_table|ON||innodb_flush_log_at_trx_commit|2||innodb_flush_method|O_DIRECT||innodb_io_capacity|15000||innodb_lock_wait_timeout|50||innodb_log_buffer_size|8388608||innodb_log_file_size|1073741824||innodb_log_files_in_group|2||innodb_max_dirty_pages_pct|50.000000||innodb_open_files|1024||innodb_read_io_threads|8||innodb_write_io_threads|8||innodb_stats_on_metadata|OFF||innodb_thread_concurrency|20||max_binlog_cache_size|18446744073709547520||max_binlog_size|1073741824||max_connect_errors|1000000||max_connections|2000||max_user_connections|0||open_files_limit|1000000||sync_binlog|1||table_definition_cache|464||table_open_cache|128||thread_cache_size|50|参数是UCloud默认的,未做特别的优化。
之前的压测文章里面,没有写压测机器的配置和网络时延,这次加上。
压测机器配置万兆带宽
CPU
压测机器到UDB的网络时延 0.15-0.22ms 左右
压测机器到自建Uhost 网络时延0.22-0.3ms左右,它的RT 大于到自建udb的0.05-0.1ms之间 。RT会影响测试效果
测试工具 sysbench 0.5 版本 。
测试场景100张表,每张表10w行数据,共1kw数据量,数据库内存设置为32G
压测脚本如下:
#!/bin/bashthreads=”1224364860728496108″dt=`date+”%Y%m%d%H%M%S”`mkdir-p/root/yace_$dt/root/doDBA-mysql-log&foriin$threads;doecho$itime=`date+”%Y%m%d%H%M%S”`/opt/yz-sysbench/bin/sysbench–test=/opt/yz-sysbench/share/sysbench/oltp.lua–oltp-tables-count=100–oltp-table-size=100000–mysql-db=sysbench–mysql-user=sysbench–mysql-password=sysbench–mysql-host=xx.xx.xx.xx–mysql-port=3306–max-time=500–max-requests=0–oltp-test-mode=complex–num-threads=$irun>/root/yace_$dt/thread_$i_$time.logsleep60donep=`pidofdoDBA`kill-9$p三 测试结果内存模型压测结果对比:
QPS
insert/delete
update
从测试结果上来看,qps基于快杰的UDB性能比基于快杰自建的数据库性能要好20%以上。
其实测试了 IO 类型的压测结果对?,可能由于压测时间比较短, 及云盘性能存在抖动等因素,测试数据结果波动较大,另咨询UCloud的技术?员,我购买的 机器将进行固件升级,这个升级后可以再做?次IO 类型的测试。
两者的价格对比UDB数据库费用
UHost自建机器费用
创建高可用的UDB和两台快杰Uhost的直接价格,基于快杰自建5602 元/月,基于快杰的UDB 5160 元/月价格更实惠。
从性价比上来说如果没有自建的运维平台,基于UHost自建数据库需要额外的运维系统(备份,监控,报警,HA等),开发运维部署这些也需要人力成本,总而言使用基于快杰的UDB更划算。
四 小结近年来 云RDS 性能的突飞猛进离不开底层cpu、磁盘、网络等方面技术的快速发展。UCloud快杰UDB的性能能够满足绝大多数业务运行的性能容量需求(大量 bad sql 除外)。
从测试结果上来看,基于快杰的数据库性能表现有比较高的涨幅,性价比还不错。对于UDB客户而言选择基于快杰的UDB是个不错的选择。
have fun with Cloud ^_^
-The End-
本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。
全文完。
Enjoy MySQL:)

版权声明