Sql-Server
如何從 sql profiler 擷取僅用於過濾查詢的執行計劃
使用 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');
只知道擷取計劃可能非常昂貴。