我知道你可以在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服務器執行查詢的時間。 –