写点什么

观《中国数据库前世今生》,体验 TencentDB 技术的崛起。

作者:GoBoy
  • 2024-07-19
    辽宁
  • 本文字数:6315 字

    阅读完需:约 21 分钟

观《中国数据库前世今生》,体验 TencentDB 技术的崛起。

👉目录


  • 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 支持单节点、双节点、三节点和集群版四种实例架构。




TencentDB 体验

今天,我们就来体验一次,国产数据发展至今的强大之处。首先先购买或者体验一个 TencentDB 的实例。


压测准备

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 测试,下面是对这个命令的解释:


监控数据

在压测执行的过程中,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: 10Report 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.00SQL 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 个线程对数据库进行压力测试的结果,包括事务处理能力、查询执行速度、延迟以及错误和重连的情况。


附上参数和含义的解释:


详细解释

以下是对 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. 初期性能强劲:1 核 1G 服务器在初始负载下表现良好,能够处理较高的 TPS 和 QPS。

  2. 性能逐渐下降:随着负载增加,TPS 和 QPS 逐渐下降,延迟显著增加,尤其是在第 15 秒。

  3. 线程管理问题:线程数在第 11 秒和第 15 秒减少,表明存在线程管理或资源分配问题。

评价

  • 初期表现:对于 1 核 1G 的服务器,初期性能表现非常不错,能够在短时间内处理较高的事务和查询量。

  • 负载应对能力:在负载增加时,性能明显下降,表明资源有限的服务器在长时间高负载下难以保持稳定性能。


总体来说,对于 1 核 1G 的服务器,初期性能表现不错,服务器的性能和稳定性,确保在高负载下仍能保持较好的响应时间和一致性。

谈谈感受

国产数据库技术经历了从技术启蒙、引进、成长到加速发展的四个阶段。特别是在 2010 年至今,随着数字化转型的加速,国产数据库如阿里云的 Polar DB、腾讯云的 TDSQL 等蓬勃发展,展现出强大的竞争力和广阔的发展前景。例如,OceanBase 在 TPC-C 基准测试中打破了 Oracle 的世界记录,成为首个登顶该榜单的中国数据库产品,标志着国产数据库在云计算时代迎来了换道超车。在国际上的认可度逐渐提升。OceanBase 的成功不仅展示了中国数据库技术的实力,也标志着国产数据库在国际竞争中的崛起。未来,随着技术的不断进步和市场的进一步拓展,国产数据库技术有望在全球范围内发挥更加重要的作用。


在这之前,未有国产数据库涉足核心业务系统;在这之后,国产数据库企业无需再向用户证明国产能不能打。

发布于: 刚刚阅读数: 2
用户头像

GoBoy

关注

须知少日拏云志,曾许人间第一流 2020-07-23 加入

用心记录技术,走心分享,始于后端,不止于后端,励志成为一名优秀的全栈架构师,真正的实现码中致富。

评论

发布
暂无评论
观《中国数据库前世今生》,体验 TencentDB 技术的崛起。_tencentdb_GoBoy_InfoQ写作社区