Sql-Server

如何從 sql profiler 擷取僅用於過濾查詢的執行計劃

  • September 25, 2020

使用 sql profiler,我們跟踪所有慢查詢(過濾持續時間/讀取)以查看我們可以優化的地方。使用的事件:

  • RPC:已完成
  • SQL:批處理完成

按持續時間過濾。

如果我添加事件 ShowPlan XML,那麼我將無法過濾基礎查詢的持續時間,從而在每秒有成百上千的查詢到達時產生巨大的負載

如何僅擷取與過濾器持續時間/從其他事件中擷取的查詢的讀取匹配的條目的執行計劃?

最簡單的方法是停止使用 Profiler 並轉到擴展事件。query_post_execution_showplan事件具有內置的持續時間,您可以使用它來非常巧妙地過濾擷取這是一個簡單的例子:

CREATE EVENT SESSION ExecPlansDuration
ON SERVER
   ADD EVENT sqlserver.query_post_execution_showplan
   (WHERE ([duration] > (10000)))
   ADD TARGET package0.event_file
   (SET filename = N'ExecPlansDuration');

只知道擷取計劃可能非常昂貴。

引用自:https://dba.stackexchange.com/questions/276075