如何在MySQL中记录查询响应时间?

Ser*_*sta 2 mysql

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

SELECT response_time FROM rt_log_table where db_name = 'dbName'; 
Run Code Online (Sandbox Code Playgroud)

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

非常感谢你,

Sol*_*are 6

您可以使用mysql性能方案来执行此操作(以及更多),请参阅使用性能架构查询分析如何配置它.

默认情况下通常会启用性能方案,但您必须启用查询历史记录才能记录所有查询.启用后,您可以通过例如获取查询持续时间

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 |
+----------+----------+--------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

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