实现的思路很简单,借助了percona server5.5的information_schema表:query_response_time
过程
1.增加变量,记录上次查询rt时,统计的query数,以及总时间(last_count, last_total)
2.采集sql执行时间时(collect函数),累加当前query数,执行总时间(cur_count, cur_total)
3.计算一段时间内rt: (cur_total - last_total)/(cur_count - last_count)
4.设置last_total = cur_total, last_count =cur_count;
5.循环到2)
增加一个新status值,命名有点挫...
root@(none) 02:17:21>show status like 'rt_from_last_query%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| rt_from_last_query | 192 |
+--------------------+-------+
1 row in set (0.00 sec)
注意这个patch理论上会有额外的开销,因为多计算了两个值(cur_count,cur_total)。
以下是patch,基于percona 5.5.18