共用方式為


在網狀架構數據倉儲中查詢深入解析

適用於: Microsoft Fabric 中的 SQL 分析端點和倉儲

在 Microsoft Fabric 中,查詢深入解析功能是可調整、可持續且可擴充的解決方案,可增強 SQL 分析體驗。 透過歷程記錄查詢數據、匯總的深入解析,以及實際查詢文字的存取權,您可以分析及調整查詢效能。 QI 僅提供在使用者內容中執行的查詢資訊,系統查詢不會考慮。

查詢深入解析功能提供 30 天的歷程記錄查詢數據和可採取動作的深入解析的集中位置,協助您做出明智的決策,以增強倉儲或 SQL 分析端點的效能。 當 SQL 查詢在 Microsoft Fabric 中執行時,查詢深入解析功能會收集並合併其執行數據,為您提供寶貴的資訊。 您可以檢視管理員、成員和參與者角色的完整查詢文字。

  • 歷程記錄查詢數據: 查詢深入解析功能會儲存有關查詢執行的歷史數據,讓您追蹤一段時間的效能變更。 系統查詢不會儲存在查詢深入解析中。
  • 匯總深入解析: 查詢深入解析功能會將查詢執行數據匯總成更可採取動作的深入解析,例如識別長時間執行的查詢或大部分作用中使用者。 這些匯總是以查詢圖形為基礎,並在如何匯總類似的查詢以產生深入解析中進一步說明?

開始之前

您應該能夠存取 Premium 容量工作區內具有參與者或更高許可權的 SQL 分析端點或倉儲

何時需要查詢深入解析?

查詢深入解析功能解決了與查詢效能和資料庫優化相關的數個問題和疑慮,包括:

查詢效能分析

  • 查詢的歷史效能為何?
  • 是否有任何長時間執行的查詢需要注意?
  • 我們可以識別導致效能瓶頸的查詢嗎?

查詢優化和微調

  • 哪些查詢經常執行,而且可以改善其效能?
  • 我們可以識別失敗或已取消的查詢嗎?
  • 我們可以追蹤一段時間查詢效能的變更嗎?
  • 是否有任何查詢持續執行不佳?

用戶活動監視

  • 提交特定查詢的人員?
  • 誰是最活躍的使用者,或具有最多長時間執行查詢的使用者?

有三個系統檢視可提供這些問題的解答:

您可以在何處看到查詢深入解析?

自動產生的檢視位於 SQL 分析端點倉儲中的架構之下queryinsights。 例如,在倉儲的 [網狀架構總管] 中,尋找 [架構]、[查詢資訊]、[檢視] 底下的查詢深入解析檢視

網狀架構總管的螢幕快照,其中顯示在 [架構]、[查詢資訊]、[檢視] 底下尋找查詢深入解析檢視的位置。

查詢完成執行之後,您會在所連接的倉儲或 SQL 分析端點檢視中看到 queryinsights 其執行數據。 如果您在 的內容WH_2中執行跨資料庫查詢,您的查詢會出現在 的WH_2查詢深入解析中。 根據執行的並行工作負載,完成的查詢最多可能需要 15 分鐘才會出現在查詢深入解析中。 查詢深入解析中出現查詢所花費的時間隨著執行並行查詢的增加而增加。

如何匯總類似的查詢來產生深入解析?

如果除了述詞值以外,查詢功能會被視為相同的查詢,但查詢文字中有兩個查詢完全相符。 空格元和新行字元會轉譯要視為不同的查詢。

您可以使用 query hash 檢視中的數據行來分析類似的查詢,並向下切入至每個執行。

例如,在參數化述詞之後,下列查詢會視為相同:

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

SELECT * FROM Orders
WHERE OrderDate BETWEEN '2000-07-01' AND '2006-07-31';

範例

識別您在過去 30 分鐘內執行的查詢

下列查詢會使用 queryinsights.exec_requests_history 和內 USER_NAME() 建函式,其會傳回您目前的會話用戶名稱。

SELECT * FROM queryinsights.exec_requests_history 
WHERE start_time >= DATEADD(MINUTE, -30, GETUTCDATE())
AND login_name = USER_NAME();

使用查詢文字中的子字串識別最常執行的查詢

下列查詢會傳回符合特定字串的最新查詢,依成功執行次數遞減排序。

SELECT * FROM queryinsights.frequently_run_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY number_of_successful_runs DESC;

使用查詢文字中的子字串識別長時間執行的查詢

下列查詢會傳回符合特定字串的查詢,並以中位數查詢運行時間遞減排序。

SELECT * FROM queryinsights.long_running_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY median_total_elapsed_time_ms DESC;