跳至主要內容
Telemetry
資料庫可靠性 SQL查詢範例

查詢資料庫鎖等待和死鎖

按事件計數、等待持續時間、未解決的鎖定和檢測到的死鎖對阻塞的資料庫操作指紋進行排名。

中級database_lock_wait_events已審查 2026-07-28測試用 阿帕奇 DataFusion 45.2.0

審閱者 Telemetry產品團隊 . SQL 相容性、事件契約、合成輸出和操作注意事項. 審查標準和所有權

問題已回答

哪些資料庫操作會造成最嚴重的鎖爭用?

當被阻止的應用程式操作連線到穩定的阻止者指紋、等待持續時間和解決結果時,鎖爭用變得可操作。

活動合約

查詢期望的欄位

欄位型別為什麼存在
timestamp_utcTimestamp當觀察到鎖等待時。
database_nameUtf8批准的邏輯資料庫名稱。
blocked_query_fingerprintUtf8被阻止的應用程式操作的標準化標籤。
blocking_query_fingerprintUtf8持有鎖的操作的標準化標籤。
lock_typeUtf8受控鎖類別。
wait_msFloat64觀察到的鎖定等待時間(以毫秒為單位)。
resolvedBoolean等待是否結束而不保持阻塞。
deadlock_detectedBoolean資料庫是否報告死鎖結果。
transaction_idUtf8應用程式安全的事務識別符號。
environmentUtf8部署環境。
DataFusion SQL

複製查詢

sql
SELECT
  database_name,
  blocked_query_fingerprint,
  blocking_query_fingerprint,
  COUNT(*) AS lock_wait_incidents,
  COUNT(DISTINCT transaction_id) AS affected_transactions,
  AVG(wait_ms) AS average_wait_ms,
  MAX(wait_ms) AS maximum_wait_ms,
  SUM(CASE WHEN NOT resolved THEN 1 ELSE 0 END) AS unresolved_incidents,
  SUM(CASE WHEN deadlock_detected THEN 1 ELSE 0 END) AS deadlocks
FROM database_lock_wait_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
  AND environment = 'production'
GROUP BY
  database_name,
  blocked_query_fingerprint,
  blocking_query_fingerprint
HAVING COUNT(*) >= 3
ORDER BY deadlocks DESC, maximum_wait_ms DESC;

此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。

查詢結果

阻塞操作的最大鎖等待時間

訂單更新顯示更長的等待時間、未解決的事件和檢測到的死鎖。

database_nameblocked_query_fingerprintblocking_query_fingerprintlock_wait_incidentsaffected_transactionsaverage_wait_msmaximum_wait_msunresolved_incidentsdeadlocks
app_productionUPDATE orders SET status = ?SELECT order FOR UPDATE881,6003,20022
analytics_productionREFRESH customer_summaryINSERT customer_event6650070000

綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。

Maximum lock wait by blocked operation:來自 Find Database Lock Waits and Deadlocks 範例結果的合成 maximum_wait_ms 值的靜態圖表
確定性範例輸出的可索引 SVG。下載它以獲取帶有歸屬的文章、操作手冊或設計評論。

重現範例

下載公共裝置

JSON 包包含型別化事件契約, reproducible 輸入行、確切的 SQL、預期輸出、審閱註釋和引擎版本。 CSV 包含顯示的結果。

SQL 是如何工作的

  1. 1阻塞和阻塞指紋使爭用關係保持可見,而無需收集參數化 SQL。
  2. 2不同的事務計數可以保護結果免受同一等待的重複樣本的影響。
  3. 3死鎖和未解決的事件優先於平均等待時間較長的情況。

需要決定的邊緣情況

  • 輪詢可以針對一個事件發出多個觀察結果。保留事務或事件識別符號。
  • 資料庫鎖定檢視可能會暴露敏感的語句文字;在發出事件之前在收集時進行標準化。
  • 預期的維護鎖應帶有批准的工作負載類別,以便可以對其進行分段。

推薦儀表板

  • 酒吧:maximum_wait_ms by blocked_query_fingerprint
  • 資料表:阻止者和被阻止的指紋對
  • 統計:未解決的事件和僵局

警示指導

僅針對影響使用者可見工作流程的死鎖或持續未解決的爭用進行頁面處理;路由維護爭用分開。

讀取警示設定

讓查詢範例發揮作用

相關埋點和指南

繼續分析

在真實事件中執行它

建立資料表,調整欄位並儲存結果

免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。

獲取 API 金鑰