MySQL性能指标TPS与QPS介绍
1.什么是TPS
TPS ( TransactionPerSecond
)每秒事务数,即数据库每秒执行的事务数。
MySQL本身没有直接提供TPS参数值。如果我们想要获得TPS的值,只有我们自己计算了。可以根据MySQL数据库提供的状态变量,来计算 TPS
。
需要使用的参数:
Com_commit
:表示提交次数;
Com_rollback
:表示回滚次数;
我们定义第一次获取的 Com_commit
的值与 Com_rollback
值的和为c_r1,时间为t1;
第二次获取的 Com_commit
的值与 Com_rollback
值的和为c_r2,时间为t2;
t1与t2单位为秒。
那么 TPS = ( cr2 - cr1 ) / ( t2 - t1 ) 算出来的就是该MySQL实例在t1 与 t2生命周期之间的平均 TPS
。
2.什么是QPS
QPS( QueryPerSecond
)每秒请求次数,也就是数据库每秒执行的SQL数量。包含 insert
、 select
、 update
、 delete
等。
MySQL数据库本身已经提供了这个 QPS
指标值,可以使用如下命令获取:
# mysqladmin -uroot -punixfbi -S /tmp/mysql3307.sock status 2> /dev/null
得到的结果里面包含 Queriesper second
:
Uptime: 1203729 Threads: 1 Questions: 3496 Slow queries: 0 Opens: 1146 Flush tables: 4 Open tables: 9 Queries per second avg: 0.002
这样 QPS = Questions / Uptime 即可得到的该指标的值。MySQL提供的这个 QPS
指标,是该MySQL实例从启动到目前,这段生命周期内的指标。
我们自己计算 QPS
时,获取两次 QPS
的值相减,然后除以两次的时间间隔。
我们定义第一次获取的 Questions
值为Q1 ,时间点为t1;
第二次获取 Questions
值为Q2,时间点为t2;
t1与t2单位为秒。
那么,QPS = ( Q2 - Q1 ) / ( t2 - t1 )
怎么获取MySQL的 Questions
值呢?
# mysqladmin -uroot -punixfbi -S /tmp/mysql3307.sock extended-status 2>/dev/null |grep "Questions"
或者
# mysql -uroot -punixfbi -S /tmp/mysql3307.sock -e "show global status like 'Questions'" 2>/dev/null
3.什么是IOPS
IOPS( Input/OutputOperationsperSecond
)即每秒处理的I/O请求次数。是判断磁盘I/O能力的指标之一。
一般来讲 IOPS
指标越高,那么单位时间内能够响应的请求自然也就越多。理论上讲,只要系统实际的请求数低于IOPS的能力,就相当于每一个请求都能得到即时响应,那么I/O就不会是瓶颈了。
注意:IOPS与磁盘吞吐量不一样,吞吐量是指单位时间内可以成功传输的数据数量。
怎么查看磁盘的IOPS呢? 可以使用iostat命令
# yum install sysstat
# iostat -dx 1 10
IOPS = r/s(每秒读了多少次) + w/s(每秒写了多少次)
本文出自 “运维特工” 博客,转载请务必保留原文链接 和 http://www.unixfbi.com




