活動合約
查詢期望的欄位
| 欄位 | 型別 | 為什麼存在 |
|---|---|---|
| timestamp_utc | Timestamp | 查詢完成時間(UTC)。 |
| request_id | Utf8 | 有界請求相關識別符號。 |
| route_template | Utf8 | 申請途徑穩定。 |
| query_fingerprint | Utf8 | 沒有參數的規範化查詢形狀。 |
| sequence_in_request | Int64 | 查詢請求中的順序。 |
| duration_ms | Float64 | 資料庫操作持續時間。 |
| environment | Utf8 | 部署環境。 |
DataFusion SQL
複製查詢
sql
WITH queries_per_request AS (
SELECT
route_template,
query_fingerprint,
request_id,
COUNT(*) AS executions_in_request
FROM database_request_query_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY route_template, query_fingerprint, request_id
)
SELECT
route_template,
query_fingerprint,
COUNT(*) AS requests,
SUM(CASE WHEN executions_in_request >= 5 THEN 1 ELSE 0 END)
AS requests_with_repeats,
AVG(executions_in_request) AS average_executions_per_request,
MAX(executions_in_request) AS maximum_executions_in_request
FROM queries_per_request
GROUP BY route_template, query_fingerprint
ORDER BY requests_with_repeats DESC, route_template;此只讀查詢是針對空型別資料表計劃和執行的 阿帕奇 DataFusion 45.2.0。確定性樣本輸出是綜合的並單獨審查;根據您自己的資料驗證欄位型別、閾值和業務定義。 閱讀測試方法。
查詢結果
請求內重複查詢
結帳路由在兩個請求中至少重複其行專案指紋五次。
/api/checkout
2
comparison 6
/api/profile
0
comparison 1
| route_template | query_fingerprint | requests | requests_with_repeats | average_executions_per_request | maximum_executions_in_request |
|---|---|---|---|---|---|
| /api/checkout | SELECT line_items BY order_id | 3 | 2 | 4 | 6 |
| /api/profile | SELECT user WITH preferences | 3 | 0 | 1 | 1 |
綜合範例輸出。在將其用於操作決策之前,針對您自己的事件架構和閾值執行查詢。
SQL 是如何工作的
- 1內部查詢在任何路由級聚合之前建立請求級重複。
- 2受控指紋對等效參數化操作進行分組,而不保留原始 SQL 值。
- 3普遍性和最壞情況的重複都被保留,因此一種極端的要求看起來並不具有系統性。
需要決定的邊緣情況
- 選擇適合有意批次處理和分頁行為的閾值。
- 非同步工作需要一個相關識別符號,該識別符號在從請求到工作人員的切換中仍然存在。
- 取樣查詢事件可以隱藏精確的重複計數;使用追蹤感知取樣或記錄估計值。
推薦儀表板
- 酒吧:requests_with_repeats(按路線和指紋)
- 趨勢:按版本劃分的每個請求的平均執行次數
- Trace連結:查詢所選request_id的序列
讓查詢範例發揮作用
相關埋點和指南
繼續分析
在真實事件中執行它
建立資料表,調整欄位並儲存結果
免費開始,傳送結構化事件,並將查詢結果用作圖表、共享儀表板小工具或警示輸入。