MySQL性能指标TPS+QPS+IOPS压测实例分析
1. 性能指标概览
QPS(Queries Per Second)就是每秒的查询数,对数据库而言就是数据库每秒执行的 SQL 数(含 insert、select、update、delete 等)。
TPS(Transactions Per Second)就是每秒的事务数。TPS 对于数据库而言就是数据库每秒执行的事务数,以 commit 成功次数为准。
IOPS 每秒磁盘进行的I/O操作次数
2. 指标计算方式
2.1 TPS
适用innodb Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数
一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值
mysql> SHOW GLOBAL STATUS LIKE 'Com_commit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_commit | 22402 | +---------------+-------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_rollback | 0 | +---------------+-------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL STATUS LIKE 'Uptime' -> ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime | 3319 | +---------------+-------+ 1 row in set (0.01 sec) TPS=(Com_commit + Com_rollback)/Uptime
2.2 QPS
同时适用与InnoDB和MyISAM 引擎 每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准 对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力
2.3 IOPS
IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标。另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。 IOPS可细分为如下几个指标: Toatal IOPS,混合读写和顺序随机I/O负载情况下的磁盘IOPS,
这个与实际I/O情况最为相符,大多数应用关注此指标。
Random Read IOPS,100%随机读负载情况下的IOPS。
Random Write IOPS,100%随机写负载情况下的IOPS。
Sequential Read IOPS,100%顺序负载读情况下的IOPS。
Sequential Write IOPS,100%顺序写负载情况下的IOPS。
IOPS的测试benchmark工具主要有Iometer, IoZone, FIO等,可以综合用于测试磁盘在不同情形下的IOPS。对于应用系统,需要首先确定数据的负载特征,然后选择合理的IOPS指标进行测量和对比分析,据此选择合适的存储介质和软件系统。
理论上可以计算出磁盘的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为, IOPS = 1000 / (3 + 60000/7200/2) = 140 IOPS = 1000 / (3 + 60000/10000/2) = 167 IOPS = 1000 / (3 + 60000/15000/2) = 200
3. mysqlslap
3.1 压测
mysqlslap 是 MySQL 自带的一个用于实现负载性能测试和压力测试的工具。它可以模拟多个客户端对数据库进行施压,并生成报告来了解数据库的性能状况。
mysqlslap 的运行过程主要分三步:
① 创建库、表,导入数据用于测试。此过程由单线程完成。
② 开始进行压力测试。该步骤可以使用多线程完成。
③ 清理测试数据。此过程由单线程完成。
[root@jeames ~]# mysqlslap --help
3.2 案例
mysqlslap -uroot -proot -h292.168.1.54 -P3306 \ --create-schema=mysqlslap --auto-generate-sql \ --auto-generate-sql-load-type=mixed \ --concurrency=100,200 --number-of-queries=1000 \ --iterations=10 --number-int-cols=7 \ --number-char-cols=13 --auto-generate-sql-add-autoincrement Benchmark #运行所有语句的平均时间,单位秒 Average number of seconds to run all queries: 0.018 seconds #运行所有语句的最小秒数 Minimum number of seconds to run all queries: 0.018 seconds #运行所有语句的最大秒数 Maximum number of seconds to run all queries: 0.018 seconds #客户端数量 Number of clients running queries: 1 #每个客户端运行查询的平均数 Average number of queries per client: 0 该语句表示测试并发为 100 和 200 的情况,进行 1000 次访问(该值一般这样预估出来:并发客户数×每客户查询次数)。这样的测试方法迭代 10 次,最终显示最大、 最小、平均值 其中:--debug-info,代表要额外输出 CPU 以及内存的相关信息。如果报错 Option 'debug-info' used, but is disabled 请取消 debug-info 参数 -number-int-cols=7 表示生成的表中必须有 7 个 int 类型的列 -number-char-cols=13 表示生成的表中必须有 13 个 char 类型的列 -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是 10、50、100 个并发。 --engines 代表要测试的引擎,可以有多个,用分隔符隔开。 --iterations 代表要运行这些测试多少次。 --auto-generate-sql 代表用系统自己生成的 SQL 脚本来测试。 --auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed) --number-of-queries 代表总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算。 --debug-info 代表要额外输出 CPU 以及内存的相关信息。 --number-int-cols :创建测试表的 int 型字段数量 --auto-generate-sql-add-autoincrement : 代表对生成的表自动添加 auto_increment 列,从 5.1.18 版本开始 --number-char-cols 创建测试表的 char 型字段数量。 --create-schema 测试的 schema,MySQL 中 schema 也就是 database。 --query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者 sql 语句来执行测试。 --only-print 查看语句做了什么。
以上是MySQL性能指标TPS+QPS+IOPS压测实例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

直接从数据库中恢复被删除的行通常是不可能的,除非有备份或事务回滚机制。关键点:事务回滚:在事务未提交前执行ROLLBACK可恢复数据。备份:定期备份数据库可用于快速恢复数据。数据库快照:可创建数据库只读副本,在数据误删后恢复数据。慎用DELETE语句:仔细检查条件,避免误删数据。使用WHERE子句:明确指定要删除的数据。使用测试环境:在执行DELETE操作前进行测试。

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。
