我知道你可以在MySQL服务器中记录所有执行的查询。有什么方法可以记录他们的响应时间(MySQl服务器用来执行查询的时间)?我想定期检查MySQL服务器中每个数据库的所有响应时间。 例如:如何在MySQL中记录查询响应时间?
SELECT response_time FROM rt_log_table where db_name = 'dbName';
P.S.我无法在客户端应用程序中插入代码。如果有一种工具可以帮助我,我可以附加到客户端。
非常感谢你,
我知道你可以在MySQL服务器中记录所有执行的查询。有什么方法可以记录他们的响应时间(MySQl服务器用来执行查询的时间)?我想定期检查MySQL服务器中每个数据库的所有响应时间。 例如:如何在MySQL中记录查询响应时间?
SELECT response_time FROM rt_log_table where db_name = 'dbName';
P.S.我无法在客户端应用程序中插入代码。如果有一种工具可以帮助我,我可以附加到客户端。
非常感谢你,
可以使用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 |
+----------+----------+--------------------------------------------------------+
日志的大小是有限的,因此如果要保留日志,您可能必须定期查询并将该数据保存到另一个表。记录通常对性能没有太大影响,但您仍然可能只想启用您需要的功能。
您可以使用microtime中()获得响应时间,那么也许插入到数据库来存储。 例如
<?php
$sql = ....;
$time = microtime(true);
mysqli_query($conn,$sql);
$diff = microtime(true)-$time;
$milliseconds = $diff * 1000;
您可以存储$milliseconds
我希望这个作品:-)
对不起,我忘了在问题中提到,但我不能像这样在客户端插入代码。谢谢。 –
哪个反应?从客户端或唯一的服务器。注意查询 - 从表中选择*;可以有不同的响应时间是表格有3行或3000.000行。所以你也计算网络流量 –
这是MySQL服务器执行查询的时间。 –