mysql 常用語句 Lock wait timeout exceeded;
SHOW PROCESSLIST;
SHOW FULL PROCESSLIST;
-- 查看線程創建的情況
`
SHOW STATUS LIKE 'Threads%';
-- 查看哪些事務耗時
SELECT
trx_id,
trx_state,
trx_started,
TIMESTAMPDIFF(SECOND, trx_started, NOW()) AS duration_sec,
trx_rows_modified,
trx_query
FROM information_schema.INNODB_TRX
WHERE TIMESTAMPDIFF(SECOND, trx_started, NOW()) > 30; -- 查詢超過60秒的事務
SELECT
trx_id,
trx_state,
trx_started,
trx_mysql_thread_id AS thread_id,
trx_query AS query
FROM information_schema.INNODB_TRX;
查看指定終端的連接數
SELECT *
FROM INFORMATION_SCHEMA.PROCESSLIST where DB='zx_wms'
一、查詢緩存(Query Cache)使用情況
查詢緩存會存儲 SELECT 語句的結果,當相同查詢再次執行時直接返回緩存結果,無需重新執行。
- 檢查查詢緩存是否啟用
sql
SHOW VARIABLES LIKE 'have_query_cache'; -- 應顯示 YES
SHOW VARIABLES LIKE 'query_cache_type'; -- ON 表示啟用,DEMAND 表示按需啟用
SHOW VARIABLES LIKE 'query_cache_size'; -- 緩存總大小(字節) - 查看緩存狀態指標
sql
SHOW STATUS LIKE 'Qcache%';
關鍵指標:
Qcache_hits:緩存命中次數(直接使用緩存結果的查詢數)。
Qcache_inserts:緩存插入次數(新查詢結果被加入緩存的次數)。
Qcache_not_cached:未被緩存的查詢數(如包含不確定函數、子查詢的查詢)。
Qcache_queries_in_cache:當前緩存中存儲的查詢數量。
Qcache_free_memory:緩存剩余空閑內存(字節)。
3. 計算緩存命中率
sql
SELECT
(Qcache_hits / (Qcache_hits + Qcache_inserts)) * 100 AS hit_rate_percentage
FROM information_schema.GLOBAL_STATUS;
理想命中率:通常建議達到 80% 以上,若過低可能需要優化查詢或調整緩存配置。
-
錯誤:"MySQL server has gone away"
當應用程序長時間空閑后,再次執行 SQL 時可能報錯。這是因為連接已被 MySQL 關閉,但應用程序仍在使用它。
解決方法:
縮短 wait_timeout(如 1800 秒),并在應用程序中實現連接池的健康檢查。
使用連接池的 testOnBorrow 或 keepAlive 功能,定期驗證連接有效性。 -
高并發場景下的連接資源浪費
過長的 wait_timeout 會導致大量空閑連接占用內存,影響性能。
優化建議:
將 wait_timeout 設置為合理值(如 300-1800 秒),平衡資源利用和應用穩定性。
監控 Threads_connected 狀態變量,確保連接數在合理范圍:
sql
SHOW GLOBAL STATUS LIKE 'Threads_connected'; -
與應用程序的連接池配合
應用程序(如 Java 的 HikariCP、Python 的 SQLAlchemy)通常有自己的連接池配置,需與 wait_timeout 協調:
連接池的 maxIdleTime 應小于 wait_timeout,避免連接被 MySQL 提前關閉。
開啟連接池的 connectionTestQuery(如 SELECT 1),定期檢查連接有效性。
七、監控與驗證 -
查看當前空閑連接數
sql
SHOW PROCESSLIST;
檢查狀態為 Sleep 的連接數量,過多可能表示 wait_timeout 過長。 -
統計連接超時關閉次數
sql
SHOW GLOBAL STATUS LIKE 'Aborted_connects';
SHOW GLOBAL STATUS LIKE 'Aborted_clients';
Aborted_clients 增加可能表示 wait_timeout 過短或應用程序未正確關閉連接。
java新手自學群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/開發/運維)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
單片機嵌入式/電子電路入門群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系統研發群:15375777
匯編/輔助/破解新手群:755783453
大數據 elasticsearch 群 481975850
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

浙公網安備 33010602011771號