當我們在使用 MySQL 運行程序時,可能會遇到程序變得非常緩慢的情況,這通常是由于 SQL 查詢被阻塞造成的。我們可以通過下面的方法來查找這些曾經阻塞的 SQL 查詢。
# 打開 MySQL 的慢查詢日志 vi /etc/my.cnf slow_query_log = 1 slow_query_log_file = /var/log/mysql_slow_query.log long_query_time = 1 service mysql restart # 查看慢查詢日志中,最近幾次產生的阻塞 SQL grep "Query_time" /var/log/mysql_slow_query.log -A 5
上面的命令將打開 MySQL 中的慢查詢日志,每當一個查詢超過一定的時限就會被記錄在日志中。我們可以使用grep
命令來查看最近幾次阻塞的 SQL 查詢,通常會輸出類似下面的內容:
# Time: 2020-09-10T12:58:57.459461Z # User@Host: root[root] @ localhost [] Id: 31 # Query_time: 13.585471 Lock_time: 0.000228 Rows_sent: 0 Rows_examined: 0 SET timestamp=1599730737; INSERT INTO `tbl_users` (`id`, `username`, `password`, `email`, `created_at`, `updated_at`) VALUES (2, 'user2', 'password2', 'user2@example.com', '2020-09-10 12:58:57', '2020-09-10 12:58:57') ON DUPLICATE KEY UPDATE `updated_at` = '2020-09-10 12:58:57'; # Time: 2020-09-10T12:59:13.190341Z # User@Host: root[root] @ localhost [] Id: 30 # Query_time: 11.238551 Lock_time: 0.000053 Rows_sent: 0 Rows_examined: 0 SET timestamp=1599730753; INSERT INTO `tbl_users` (`id`, `username`, `password`, `email`, `created_at`, `updated_at`) VALUES (1, 'user1', 'password1', 'user1@example.com', '2020-09-10 12:59:13', '2020-09-10 12:59:13') ON DUPLICATE KEY UPDATE `updated_at` = '2020-09-10 12:59:13';
我們可以通過分析日志中記錄的 SQL 查詢,確定哪些查詢是阻塞了數據庫,造成了程序緩慢的情況。然后針對這些 SQL 查詢進行優化,以提高程序的運行效率。
下一篇css樣式視頻循環播放