mysql qps tps 计算

本文深入解析MySQL数据库的性能监控指标,包括QPS、TPS、各类缓存命中率、ThreadCache命中率、锁定状态等,帮助理解数据库运行状况。
(1)QPS(每秒Query量) 
QPS = Questions(or Queries) / seconds 
mysql > show  global  status like 'Question%'; 
 
(2)TPS(每秒事务量) 
TPS = (Com_commit + Com_rollback) / seconds 
mysql > show global status like 'Com_commit'; 
mysql > show global status like 'Com_rollback'; 
 
(3)key Buffer 命中率 
mysql>show  global   status  like   'key%'; 
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100% 
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100% 
 
(4)InnoDB Buffer命中率 
mysql> show status like 'innodb_buffer_pool_read%'; 
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100% 
 
(5)Query Cache命中率 
mysql> show status like 'Qcache%'; 
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%; 
 
(6)Table Cache状态量 
mysql> show global  status like 'open%'; 
比较 open_tables  与 opend_tables 值 
 
(7)Thread Cache 命中率 
mysql> show global status like 'Thread%'; 
mysql> show global status like 'Connections'; 
Thread_cache_hits = (1 - Threads_created / connections ) * 100% 
 
(8)锁定状态 
mysql> show global  status like '%lock%'; 
Table_locks_waited/Table_locks_immediate=0.3%  如果这个比值比较大的话,说明表锁造成的阻塞比较严重 
Innodb_row_lock_waits innodb行锁,太大可能是间隙锁造成的 
 
(9)复制延时量 
mysql > show slave status 
查看延时时间 
 
(10) Tmp Table 状况(临时表状况) 
mysql > show status like 'Create_tmp%'; 
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超过10%,如果Created_tmp_tables值比较大, 
可能是排序句子过多或者是连接句子不够优化 
 
(11) Binlog Cache 使用状况 
mysql > show status like 'Binlog_cache%'; 
如果Binlog_cache_disk_use值不为0 ,可能需要调大 binlog_cache_size大小 
 
(12) Innodb_log_waits 量 
mysql > show status like 'innodb_log_waits'; 
Innodb_log_waits值不等于0的话,表明 innodb log  buffer 因为空间不足而等待 
 
比如命令: 
>#show global status; 
虽然可以使用: 
>#show global status like %...%; 
来过滤,但是对应长长的list,每一项都代表什么意思,还是有必要弄清楚。
### TPSQPS 计算公式 #### MySQL 中的 QPSTPS 计算方式 对于数据库系统的性能评估,QPS(Queries Per Second)和TPS(Transactions Per Second)是非常重要的两个指标。 在MySQL环境中,可以通过特定的状态变量来获取用于计算这两个值的数据[^1]。具体来说: - **QPS** 是指每秒钟执行的SQL语句数量。为了得到这个数值,在一段时间内累积查询次数除以这段时间间隔即可得出平均QPS。例如,可以利用`Questions`状态变量表示总的查询量,再基于采样周期求得平均每秒查询数作为QPS。 ```sql SHOW GLOBAL STATUS LIKE 'Questions'; ``` - **TPS** 则反映了事务处理能力,即单位时间内完成的事物数目。同样地,通过监控`Com_commit`加上`Com_rollback`所代表的成功提交与回滚事件总和,并将其转换成每秒发生率就能获得TPS数据。 ```sql SHOW GLOBAL STATUS WHERE Variable_name IN ('Com_commit', 'Com_rollback'); ``` #### Oracle中的QPSTPS计算方法 而在Oracle环境下,则依赖于不同的视图来进行相应的统计分析工作。通常会涉及到V$SYSTEM_EVENT,V$SESSION_WAIT等动态性能视图来收集必要的统计数据以便后续加工处理成为所需的QPS/TPS度量标准。 另外一种更通用的方法是从业务逻辑层面出发定义什么是构成一次请求或是交易行为之后再去量化这些操作频率从而间接推导出QPSTPS的表现形式[^2]。 #### 使用二八法则估算所需资源 当考虑实际部署环境下的服务器负载规划时,还可以借助所谓的“二八原则”,假设一天中有80%的工作负荷集中发生在全天仅有的约五个小时之内——也就是所谓的高峰期。此时可以根据预期的日访问总量乘以0.8后再除以该段时间内的秒数,以此估计出高峰时段所需要的最小QPS容量;进一步地,若已知单节点能够承受的最大QPS限额,则可据此判断至少需要配置多少台相同规格的服务端设备才能满足需求。 例如给定每日预计有三百万次页面浏览(PVs),那么按照上述思路计算出来的理想化条件下单一实例应具备大约139左右的QPS水平;而假使现有硬件平台只能提供近似58个Query per second的话,则理论上讲就需要准备接近三套这样的基础设施组合方案以确保整体服务稳定性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值