Sql-Server
檢查分區消除是否有效
我在我們的 DEV/TEST 環境中的一張表上實現了分區,並修改了一些程序以在訪問該表時使用分區鍵。
如何驗證數據庫中是否確實發生了分區消除?
我試著用這個查詢檢查它。但是我只看到提到了“partitioned = true”,但沒有訪問多少個分區。
SELECT eqs.execution_count, CAST((1.)*eqs.total_worker_time/eqs.execution_count AS NUMERIC(10,1)) AS avg_worker_time, eqs.last_worker_time, CAST((1.)*eqs.total_logical_reads/eqs.execution_count AS NUMERIC(10,1)) AS avg_logical_reads, eqs.last_logical_reads, (SELECT TOP 1 SUBSTRING(est.text,statement_start_offset / 2+1 , ((CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(nvarchar(max),est.text)) * 2) ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement, qp.query_plan FROM sys.dm_exec_query_stats AS eqs CROSS APPLY sys.dm_exec_sql_text (eqs.sql_handle) AS est JOIN sys.dm_exec_cached_plans cp on eqs.plan_handle=cp.plan_handle CROSS APPLY sys.dm_exec_query_plan (cp.plan_handle) AS qp WHERE est.text like '%<TABLE_NAME>%' OPTION (RECOMPILE);
您是否有任何其他查詢可以幫助我確定我的數據庫中是否發生分區消除?
謝謝 !
羅尼。
使用擴展事件通過
query_post_execution_showplan
事件庫擷取實際執行計劃。創建會話時,請注意新會話嚮導中的以下警告:query_post_execution_showplan
在執行 SQL 語句後發生。此事件返回實際查詢計劃的 XML 表示。使用此事件可能會產生顯著的性能成本,因此僅應在故障排除或在短時間內監視特定問題時使用它。
以下 T-SQL 將創建所需的擴展事件會話。不要在生產 SQL Server 上執行它,除非你想讓它慢一點。
CREATE EVENT SESSION [CapturePlans] ON SERVER ADD EVENT sqlserver.query_post_execution_showplan( ACTION(sqlserver.client_app_name,sqlserver.database_id,sqlserver.sql_text)) ADD TARGET package0.ring_buffer(SET max_memory=(2048)) WITH (STARTUP_STATE=OFF) GO ALTER EVENT SESSION [CapturePlans] ON SERVER STATE = START;