首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SLEEP(N) 函數實戰:調試慢查詢、驗證 SQL 執行、捕獲瞬時行程

     編輯:MySQL 綜合教學

MySQL SLEEP(N) 函數實戰:調試慢查詢、驗證 SQL 執行、捕獲瞬時行程

基本行為

SELECT SLEEP(1);
-- 返回 0,耗時 1.00 秒

可強制讓查詢停留 N 秒,便於在 SHOW PROCESSLIST 或 information_schema.PROCESSLIST 中捕獲極快結束的語句。

典型應用場景

  1. 驗證程式確實發送了 SQL:在疑似未執行的查詢中加入 SLEEP(2),觀察行程列表是否出現。
  2. 模擬慢查詢測試監控告警:在測試環境注入 SLEEP(5) 驗證慢查詢日誌與告警機制。

關鍵限制:僅對「符合條件的行」生效

  • 查無資料時 不會睡眠:
    SELECT SLEEP(1), name FROM animals WHERE name='pig'; -- 無記錄,瞬間返回
  • 多行結果會 累加睡眠:
    SELECT SLEEP(1), name FROM animals WHERE name LIKE '%ger'; -- 3 行,總耗時 ~3 秒

原理說明

SLEEP() 在「逐行輸出」階段被調用,故 WHERE 過濾後無行則不執行;有多行則對每行執行一次。這也是為什麼它常用於 SELECT 列表而非 WHERE 條件中。

注意

生產環境嚴禁留存 SLEEP(),會嚴重拖慢效能並佔用連線資源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved