活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 當觀察到鎖等待時。 |
| database_name | Utf8 | 批准的邏輯資料庫名稱。 |
| blocked_query_fingerprint | Utf8 | 被阻止的應用程式操作的標準化標籤。 |
| blocking_query_fingerprint | Utf8 | 持有鎖的操作的標準化標籤。 |
| lock_type | Utf8 | 受控鎖類別。 |
| wait_ms | Float64 | 觀察到的鎖定等待時間(以毫秒為單位)。 |
| resolved | Boolean | 等待是否結束而不保持阻塞。 |
| deadlock_detected | Boolean | 資料庫是否報告死鎖結果。 |
| transaction_id | Utf8 | 應用程式安全的事務識別符號。 |
| environment | Utf8 | 部署環境。 |
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。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
阻塞操作的最大鎖等待時間
訂單更新顯示更長的等待時間、未解決的事件和檢測到的死鎖。
UPDATE orders SET status = ?
3,200 ms
comparison 2 ms
REFRESH customer_summary
700 ms
comparison 0 ms
| database_name | blocked_query_fingerprint | blocking_query_fingerprint | lock_wait_incidents | affected_transactions | average_wait_ms | maximum_wait_ms | unresolved_incidents | deadlocks |
|---|---|---|---|---|---|---|---|---|
| app_production | UPDATE orders SET status = ? | SELECT order FOR UPDATE | 8 | 8 | 1,600 | 3,200 | 2 | 2 |
| analytics_production | REFRESH customer_summary | INSERT customer_event | 6 | 6 | 500 | 700 | 0 | 0 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1阻塞和阻塞指紋使爭用關係保持可見,而無需收集參數化 SQL。
- 2不同的事務計數可以保護結果免受同一等待的重複樣本的影響。
- 3死鎖和未解決的事件優先於平均等待時間較長的情況。
需要決定的邊緣情況
- 輪詢可以針對一個事件發出多個觀察結果。保留事務或事件識別符號。
- 資料庫鎖定檢視可能會暴露敏感的語句文字;在發出事件之前在收集時進行標準化。
- 預期的維護鎖應帶有批准的工作負載類別,以便可以對其進行分段。
推薦儀表板
- 酒吧:maximum_wait_ms by blocked_query_fingerprint
- 資料表:阻止者和被阻止的指紋對
- 統計:未解決的事件和僵局
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。