Theo kinh nghiệm trước đây của tôi Ngưỡng chi phí cho tính song song không giúp giảm CXPACKET.
CXPACKET
Chờ đợi cao có thể xảy ra do số liệu thống kê không chính xác dẫn đến Sallwed Parallellism.
- Thông tin thêm về CXPACKET Chờ đợi: Skewed Parallelism
- Mục kết nối Microsoft
- Truy vấn của tôi là (Không) Chờ đợi vì Song song? - Tim Ford
Sau đây là SQL tôi đã sử dụng để tìm các phiên có cả CXPacket và " chờ đợi khác " trong đó (vui lòng xem dagram bên dưới).
SQL
DECLARE @RawResult TABLE ([database_id] INT,[session_id] INT,exec_context_id INT, [blocking_session_id] INT,task_state VARCHAR(20),
[cpu_time] BIGINT,[wait_duration_ms] BIGINT, [wait_type] VARCHAR(100),[resource_description] nvarchar(3072),
[sql_handle] varbinary(64),[plan_handle] varbinary(64)
)
INSERT INTO @RawResult
SELECT
[R].[database_id],
[S].[session_id],
[W].exec_context_id,
[W].blocking_session_id,
[T].task_state,
[R].[cpu_time],
[W].[wait_duration_ms],
[W].[wait_type],
[W].[resource_description],
[R].[sql_handle],
[R].[plan_handle]
FROM sys.dm_os_waiting_tasks [W]
INNER JOIN sys.dm_os_tasks [T] ON
[W].[waiting_task_address] = [T].[task_address]
INNER JOIN sys.dm_exec_sessions [S] ON
[W].[session_id] = [S].[session_id]
INNER JOIN sys.dm_exec_requests [R] ON
[S].[session_id] = [R].[session_id]
WHERE [S].[is_user_process] = 1
--AND S.session_id <> @@SPID--???
--ORDER BY [W].[session_id],[W].[exec_context_id];
SELECT
DB_NAME(C.database_id) AS database_name,
C.[database_id],
C.[session_id],
C.exec_context_id,
C.blocking_session_id,
C.task_state,
C.[cpu_time],
C.[wait_duration_ms],
C.[wait_type],
C.[sql_handle],
C.[plan_handle],
[H].text,
[P].[query_plan],
C.[resource_description]
FROM @RawResult C
OUTER APPLY sys.dm_exec_sql_text (C.[sql_handle]) [H]
OUTER APPLY sys.dm_exec_query_plan (C.[plan_handle]) [P]
WHERE C.[session_id] IN
(
SELECT A.[session_id]
FROM @RawResult A
INNER JOIN @RawResult B
ON A.[session_id] = B.[session_id]
AND A.wait_type='CXPACKET'
AND B.wait_type <> 'CXPACKET'
)
ORDER BY C.[session_id],C.[exec_context_id]
Quét lớn cũng có thể là một phần của nguyên nhân gốc rễ. Khi tôi kiểm tra kế hoạch thực hiện từ truy vấn trên, tôi đã tìm thấy một lần quét như vậy trong cơ sở dữ liệu của mình. Ngoài ra còn có một gợi ý chỉ mục bị thiếu trong kế hoạch thực hiện.