👉目录
- TencentDB for MySQL
- TencentDB 架构
- TencentDB 体验
- 压测准备
- TencentDB
- sysbench 下载
- sysbench 安装
- sysbench 版本
- sysbench 构造数据
- 监控数据
- sysbench 压测及解读
- 报告总结分析
- 谈谈感受
_IDC发布报告《中国金融行业分布式事务型数据库市场份额,2023:技术验证结束,迎接高速增长》_:在金融整体市场和银行细分市场,腾讯云数据库TDSQL斩获“双料”第一!
引言
在数字化浪潮席卷全球的今天,数据库技术作为计算机科学的重要支柱,承载着数据存储、检索、分析等核心任务,其重要性不言而喻。而在这众多的数据库技术中,MySQL以其开源、稳定、高效的特点,在全球范围内占据了举足轻重的地位。当谈及中国数据库技术的发展时,我们不得不提到腾讯云下的TencentDB for MySQL——这一在本土市场崛起的技术力量。
《中国数据库前世今生》这部纪录片,为我们呈现了中国数据库技术从无到有、从小到大的发展历程。在这其中,TencentDB for MySQL技术的崛起,无疑是中国数据库技术发展史上浓墨重彩的一笔。它不仅是腾讯云在数据库领域多年技术积累和创新成果的集中展现,更是中国数据库技术实力提升的重要标志。
也正通过观看这部纪录片,使我想去有机会深入了解TencentDB for MySQL技术的研发背景、技术特点、应用场景以及市场表现。我们将看到,在腾讯云强大的技术实力支撑下,TencentDB for MySQL如何不断突破自我,提升性能,优化服务,以满足日益增长的数字化需求。同时,我们也将感受到中国数据库技术在国际竞争中所展现出的独特魅力和无限潜力。
让我们一同走进《中国数据库前世今生》的世界,共同体验TencentDB for MySQL技术的崛起之路,见证中国数据库技术的辉煌历程。
TencentDB for MySQL
云数据库 MySQL(TencentDB for MySQL)是腾讯云推出的一款基于开源数据库 MySQL 的企业级数据库服务。它为用户在云端轻松设置、操作和扩展关系数据库提供了便利。云数据库 MySQL 的主要特点包括:
云存储服务:这是腾讯云平台为互联网应用提供的数据存储服务,确保用户数据的安全性和稳定性。
完全兼容 MySQL 协议:云数据库 MySQL 支持标准的 MySQL 协议,这意味着任何适用于 MySQL 的应用场景都可以无缝迁移到腾讯云数据库上。
高性能、高可靠、易用、便捷的 MySQL 集群服务:腾讯云数据库 MySQL 提供了卓越的性能和可靠性,数据可靠性高达99.9999999%。同时,它还具备易用性和便捷性,让用户能够轻松管理和维护数据库。
丰富的功能整合:
云数据库 MySQL 集成了备份、扩容、迁移等实用功能,帮助用户轻松应对各种数据库管理需求。
新一代数据库工具 DMC:
腾讯云还提供了 DMC 这一先进的数据库管理工具,让用户能够更加便捷地进行数据库的管理、监控和优化。
TencentDB 架构
云数据库 MySQL 支持单节点、双节点、三节点和集群版四种实例架构。
架构 | 说明 | 适用场景 |
---|---|---|
单节点 | 支持版本:MySQL 5.7、8.0。节点:单个节点。 | 个人学习、微型网站、企业非核心小型系统以及大中型企业开发与测试环境。 |
双节点 | 支持版本:MySQL 5.6、5.7、8.0。节点:一主一备。主备复制方式:异步(默认)、半同步。 | 游戏、互联网、物联网、零售电商、物流、保险、证券等行业应用。 |
三节点 | 支持版本:MySQL 5.6、5.7、8.0。节点:一主两备。主备复制方式:异步(默认)、强同步、半同步。 | 游戏、互联网、物联网、零售电商、物流、保险、证券等行业应用。 |
集群版 | 支持版本:MySQL 5.7、8.0。节点:一个读写节点和最多5个只读节点。主备复制方式:异步、半同步(默认)。 | 游戏、互联网、物联网、零售电商、物流、保险、证券等行业应用。 |
TencentDB 体验
今天,我们就来体验一次,国产数据发展至今的强大之处。首先先购买或者体验一个TencentDB的实例。
压测准备
配置 | 参数 |
---|---|
CPU | 1核 |
内存 | 1G |
MySQL | 5.8 |
腾讯云轻量服务器 | CentOS7.5 |
TencentDB 压测
概念了解
在开始压测之前,我们首先来了解几个和压测有关的关键字,通过了解这些指标的定义和计算方法,可以更好地评估和优化系统的性能:
QPS(Queries Per Second)指的是每秒查询率,是衡量系统处理查询请求能力的一个重要指标。它通常用于评估搜索引擎、数据库、API等系统的性能。
TPS(Transactions Per Second)即每秒事务处理率,是衡量系统在单位时间内处理事务数量的一个重要指标。它通常用于评估数据库系统、交易系统等需要处理复杂事务的系统的性能。
RT(95%) 通常指的是95%的请求的延迟时间,单位为毫秒,它反映了系统处理请求的响应速度。
以下是详细介绍:
QPS(每秒查询率)
- 定义:系统每秒能够处理的查询请求数量。
- 应用场景:搜索引擎、数据库查询、Web服务器等。
- 计算方式:总查询数除以总时间(秒)。
- 重要性:反映了系统的查询处理能力和响应速度。
TPS(每秒事务处理率)
- 定义:系统每秒能处理的事务数量。
- 应用场景:数据库系统、金融交易系统、电商平台等。
- 计算方式:总事务数除以总时间(秒)。
- 重要性:反映了系统的处理能力和效率。
RT(95%)(95%的请求延迟)
- 定义:95%的请求的延迟时间,单位为毫秒。
- 应用场景:用于评估系统的响应速度。
- 计算方式:通常通过监控工具收集数据后计算得出。
- 重要性:反映了系统处理请求的实时性,较低的RT(95%)意味着更好的用户体验。
sysbench 下载
我们通过以下命令,获取执行 script.rpm.sh 并执行脚本。
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sysbench 安装
sudo yum -y install sysbench
sysbench 版本
sysbench --version
sysbench 构造数据
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=100000 oltp_read_write --db-ps-mode=disable prepare
执行成功后,查看我们通过 腾讯云的 DMS 数据管理工具(数据库管理(DMC)是一个高效、可靠的一站式数据库管理平台,帮您更加便捷、规范地管理多种数据库实例。),查看的 TencentDB 服务器数据。
上述的命令是用来运行 sysbench
的 oltp_read_write
测试,下面是对这个命令的解释:
参数 | 解释 |
---|---|
--db-driver=mysql | 指定数据库驱动为 MySQL |
--time=300 | 测试持续时间,单位为秒 |
--threads=10 | 并发线程数量 |
--report-interval=1 | 报告间隔时间,单位为秒 |
--mysql-host=127.0.0.1 | MySQL 服务器地址 |
--mysql-port=3306 | MySQL 服务器端口 |
--mysql-user=root | MySQL 用户名 |
--mysql-password=123456 | MySQL 密码 |
--mysql-db=test\_db | 要测试的数据库名称 |
--tables=20 | 生成的表数量 |
--table\_size=1000000 | 每个表的记录数 |
oltp\_read\_write | 运行 oltp\_read\_write 测试 |
--db-ps-mode=disable | 禁用预处理语句 |
prepare | 准备阶段,创建表和索引 |
监控数据
在压测执行的过程中,TencentDB 提供了专业的可视化工具,对实例进行监控。
云数据库 MySQL 支持主实例(包括读写节点)、只读实例(包括只读节点)、灾备实例,以及数据库代理节点的监控,并为每个实例提供独立的监控视图供查询。
监控分类
云数据库 MySQL 包括资源监控、引擎监控(普通)、引擎监控(扩展)、部署监控4种监控类型,通过查看不同监控类型的指标,可快速、准确的了解实例性能及运行状况。
资源监控:提供 CPU、内存、磁盘及网络相关的监控数据。
引擎监控(普通):提供连接数、锁信息、热点表、慢查询等相关的监控数据,方便您诊断故障及性能优化。
引擎监控(扩展):提供更为丰富引擎相关的监控指标,协助您最大限度发现数据库存在或潜在的健康问题。
部署监控:提供主从延迟相关的监控指标。部署监控分为主机和备机:
若实例为主实例,则实例部署监控的对象是主实例与其隐藏备机之间的链路,部署监控展示为隐藏备机的 IO、SQL 线程状态,主从延迟距离和主从延迟时间指的是主实例与其隐藏备机之间。
监控指标
腾讯云可观测平台从实例维度为云数据库 MySQL 实例提供丰富的监控指标,具体请参见下表。
除了通过监控指标来掌握实例的运行状况,云数据库 MySQL 也支持监控事件和事件告警,通过设置事件规则、事件目标及推送用户,当检测到异常事件,事件告警将通过多种可选的方式向用户发送告警通知,帮助用户更全面的掌控实例的运行信息。
详细了解事件告警,请参见 事件总线。
详细了解支持的监控事件,请参见 云数据库 MySQL 事件列表。
sysbench 压测及解读
我们从10个线程开始压,压10秒钟,并且同时读和写的操作。
sysbench --db-driver=mysql --time=10 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
执行结果
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 10
Report intermediate results every 1 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 1s ] thds: 10 tps: 79.84 qps: 1660.77 (r/w/o: 1167.73/323.37/169.67) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 10 tps: 56.02 qps: 1177.50 (r/w/o: 841.35/224.09/112.05) lat (ms,95%): 132.49 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 10 tps: 49.00 qps: 976.99 (r/w/o: 681.99/198.00/97.00) lat (ms,95%): 110.66 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 10 tps: 49.99 qps: 970.88 (r/w/o: 676.92/193.98/99.99) lat (ms,95%): 112.67 err/s: 0.00 reconn/s: 0.00
[ 5s ] thds: 10 tps: 47.00 qps: 969.95 (r/w/o: 683.96/190.99/95.00) lat (ms,95%): 106.75 err/s: 0.00 reconn/s: 0.00
[ 6s ] thds: 10 tps: 57.01 qps: 1107.21 (r/w/o: 768.14/226.04/113.02) lat (ms,95%): 116.80 err/s: 0.00 reconn/s: 0.00
[ 7s ] thds: 10 tps: 66.00 qps: 1347.97 (r/w/o: 945.98/269.99/132.00) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 8s ] thds: 10 tps: 68.00 qps: 1352.07 (r/w/o: 949.05/266.01/137.01) lat (ms,95%): 108.68 err/s: 0.00 reconn/s: 0.00
[ 9s ] thds: 10 tps: 65.99 qps: 1321.78 (r/w/o: 923.85/265.96/131.98) lat (ms,95%): 121.08 err/s: 0.00 reconn/s: 0.00
[ 10s ] thds: 10 tps: 66.00 qps: 1307.02 (r/w/o: 914.01/262.00/131.00) lat (ms,95%): 134.90 err/s: 0.00 reconn/s: 0.00
[ 11s ] thds: 8 tps: 7.00 qps: 84.01 (r/w/o: 49.01/27.00/8.00) lat (ms,95%): 104.84 err/s: 0.00 reconn/s: 0.00
[ 12s ] thds: 8 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 13s ] thds: 8 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 14s ] thds: 8 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
[ 15s ] thds: 6 tps: 2.00 qps: 12.00 (r/w/o: 2.00/8.00/2.00) lat (ms,95%): 13550.80 err/s: 0.00 reconn/s: 0.00
[ 16s ] thds: 6 tps: 0.00 qps: 0.00 (r/w/o: 0.00/0.00/0.00) lat (ms,95%): 0.00 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 8610
write: 2460
other: 1230
total: 12300
transactions: 615 (36.98 per sec.)
queries: 12300 (739.56 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 16.6302s
total number of events: 615
Latency (ms):
min: 98.59
avg: 188.90
max: 13814.12
95th percentile: 132.49
sum: 116172.86
Threads fairness:
events (avg/stddev): 61.5000/37.36
execution time (avg/stddev): 11.6173/2.44
参数解释
1s thds: 10 tps: 79.84 qps: 1660.77(r/w/o: 1167.73/323.37/169.67) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
这份报告提供了在1秒内,10个线程对数据库进行压力测试的结果,包括事务处理能力、查询执行速度、延迟以及错误和重连的情况。
附上参数和含义的解释:
参数 | 数值 | 含义解释 |
---|---|---|
时间 | 1s | 测试进行了1秒的时间 |
线程数(thds) | 10 | 测试使用了10个线程 |
每秒事务数(tps) | 79.84 | 每秒完成的事务数 |
每秒查询数(qps) | 1660.77 | 每秒执行的查询数 |
读/写/其他(r/w/o) | 1167.73/323.37/169.67 | 每秒读、写和其他操作的次数 |
95%延迟(lat, ms) | 161.51 | 95%的请求的延迟时间,单位为毫秒 |
每秒错误数(err/s) | 0.00 | 每秒发生的错误数 |
每秒重连数(reconn/s) | 0.00 | 每秒发生的重连数 |
详细解释
以下是对 sysbench
工具进行性能测试的报告进行详细的解释:
初始化设置
- Sysbench 版本:1.0.20
- LuaJIT 版本:2.1.0-beta2
- 线程数:10
- 报告间隔:每秒一次
- 随机数生成器:从当前时间初始化
每秒结果
- 线程启动:10个
报告为每秒提供统计数据:
第一秒:
- **每秒事务数 (TPS)**:79.84
- **每秒查询数 (QPS)**:1660.77(读取:1167.73,写入:323.37,其他操作:169.67)
- **95%延迟**:161.51 毫秒
第二秒:
- **TPS**:56.02
- **QPS**:1177.50(读取:841.35,写入:224.09,其他操作:112.05)
- **95%延迟**:132.49 毫秒
这个模式持续到第11秒,每秒报告不同的TPS、QPS和延迟。
第十一秒:
- **线程数**:8(从10减少)
- **TPS**:7.00
- **QPS**:84.01(读取:49.01,写入:27.00,其他操作:8.00)
- **95%延迟**:104.84 毫秒
第十二至十四秒:
- **线程数**:8
- **TPS**:0.00
- **QPS**:0.00
第十五秒:
- **线程数**:6(从8进一步减少)
- **TPS**:2.00
- **QPS**:12.00(读取:2.00,写入:8.00,其他操作:2.00)
- **95%延迟**:13550.80 毫秒
第十六秒:
- **线程数**:6
- **TPS**:0.00
- **QPS**:0.00
总结统计
SQL 统计:
- 总查询数:12300(读取:8610,写入:2460,其他:1230)
- 总事务数:615(每秒36.98个)
- 每秒总查询数:739.56
- 忽略错误数:0
- 重连数:0
总体统计:
- 总时间:16.6302秒
- 总事件数:615
延迟:
- 最小延迟:98.59毫秒
- 平均延迟:188.90毫秒
- 最大延迟:13814.12毫秒
- 95%延迟:132.49毫秒
- 延迟总和:116172.86毫秒
线程公平性:
- 事件(平均/标准差):61.5000/37.36
- 执行时间(平均/标准差):11.6173/2.44
报告总结分析
根据sysbench的压力测试,我们对 TencentDB for MySQL1核1G服务器性能总结。
初期性能表现
较高的TPS和QPS:在测试的前几秒,服务器表现出较高的每秒事务数(TPS)和每秒查询数(QPS)。
- 第一秒:TPS达到79.84,QPS为1660.77,延迟95%为161.51毫秒。
- 第二秒:TPS为56.02,QPS为1177.50,延迟95%为132.49毫秒。
- 延迟合理:初期的95%延迟较低,系统在初始负载下响应时间较好。
性能逐渐下降
TPS和QPS下降:随着测试进行,TPS和QPS逐渐下降。
- 第十秒:TPS下降到66.00,QPS为1307.02,延迟95%增加到134.90毫秒。
线程数减少:第11秒和第15秒,线程数分别减少到8和6,表明系统可能遇到了线程管理或资源分配问题。
- 第十五秒:TPS显著下降到2.00,QPS仅为12.00,延迟95%急剧增加到13550.80毫秒。
延迟显著增加
延迟波动和增加:延迟波动性和增加表明系统在高负载下的响应时间不稳定。
- 最大延迟达到13814.12毫秒,平均延迟为188.90毫秒。
总体统计数据
- 总事务数:在16.63秒的测试时间内,完成了615个事务。
- 总查询数:共执行了12300个查询(读取:8610,写入:2460,其他操作:1230)。
- 延迟总结:95%延迟为132.49毫秒,延迟总和为116172.86毫秒。
主要发现
- 初期性能强劲:1核1G服务器在初始负载下表现良好,能够处理较高的TPS和QPS。
- 性能逐渐下降:随着负载增加,TPS和QPS逐渐下降,延迟显著增加,尤其是在第15秒。
- 线程管理问题:线程数在第11秒和第15秒减少,表明存在线程管理或资源分配问题。
评价
- 初期表现:对于1核1G的服务器,初期性能表现非常不错,能够在短时间内处理较高的事务和查询量。
- 负载应对能力:在负载增加时,性能明显下降,表明资源有限的服务器在长时间高负载下难以保持稳定性能。
总体来说,对于1核1G的服务器,初期性能表现不错,服务器的性能和稳定性,确保在高负载下仍能保持较好的响应时间和一致性。
谈谈感受
国产数据库技术经历了从技术启蒙、引进、成长到加速发展的四个阶段。特别是在2010年至今,随着数字化转型的加速,国产数据库如阿里云的Polar DB、腾讯云的TDSQL等蓬勃发展,展现出强大的竞争力和广阔的发展前景。例如,OceanBase在TPC-C基准测试中打破了Oracle的世界记录,成为首个登顶该榜单的中国数据库产品,标志着国产数据库在云计算时代迎来了换道超车。在国际上的认可度逐渐提升。OceanBase的成功不仅展示了中国数据库技术的实力,也标志着国产数据库在国际竞争中的崛起。未来,随着技术的不断进步和市场的进一步拓展,国产数据库技术有望在全球范围内发挥更加重要的作用。
在这之前,未有国产数据库涉足核心业务系统;在这之后,国产数据库企业无需再向用户证明国产能不能打。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。