2016-05-23 55 views
0

我知道你可以在MySQL服务器中记录所有执行的查询。有什么方法可以记录他们的响应时间(MySQl服务器用来执行查询的时间)?我想定期检查MySQL服务器中每个数据库的所有响应时间。 例如:如何在MySQL中记录查询响应时间?

SELECT response_time FROM rt_log_table where db_name = 'dbName'; 

P.S.我无法在客户端应用程序中插入代码。如果有一种工具可以帮助我,我可以附加到客户端。

非常感谢你,

+0

哪个反应?从客户端或唯一的服务器。注意查询 - 从表中选择*;可以有不同的响应时间是表格有3行或3000.000行。所以你也计算网络流量 –

+0

这是MySQL服务器执行查询的时间。 –

回答

3

可以使用MySQL的性能方案,要做到这一点(和更多),请参阅如何配置它Query Profiling Using Performance Schema

性能方案通常默认启用,但您必须启用查询历史才能记录所有查询。一旦启用,你可以通过例如

mysql> SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT 
    -> FROM performance_schema.events_statements_history_long WHERE SQL_TEXT like '%10001%'; 
+----------+----------+--------------------------------------------------------+ 
| event_id | duration | sql_text            | 
+----------+----------+--------------------------------------------------------+ 
|  31 | 0.028310 | SELECT * FROM employees.employees WHERE emp_no = 10001 | 
+----------+----------+--------------------------------------------------------+ 

日志的大小是有限的,因此如果要保留日志,您可能必须定期查询并将该数据保存到另一个表。记录通常对性能没有太大影响,但您仍然可能只想启用您需要的功能。

0

您可以使用microtime中()获得响应时间,那么也许插入到数据库来存储。 例如

<?php 
$sql = ....; 
$time = microtime(true); 
mysqli_query($conn,$sql); 
$diff = microtime(true)-$time; 
$milliseconds = $diff * 1000; 

您可以存储$milliseconds 我希望这个作品:-)

+0

对不起,我忘了在问题中提到,但我不能像这样在客户端插入代码。谢谢。 –