CXPACKET và LATCH_EX cao chờ đợi


13

Tôi đang gặp một số vấn đề về hiệu năng với hệ thống xử lý dữ liệu mà tôi đang làm việc. Tôi đã thu thập số liệu thống kê chờ đợi từ một giờ mỗi phút, trong đó hiển thị một lượng lớn các sự kiện chờ đợi CXPACKET và LATCH_EX.

Hệ thống này bao gồm 3 Máy chủ SQL xử lý, thực hiện rất nhiều thao tác và tính toán số, sau đó đưa dữ liệu vào một máy chủ cụm trung tâm. Các máy chủ xử lý có thể có tối đa 6 công việc đang chạy mỗi lần. Các số liệu thống kê chờ này là dành cho cụm trung tâm mà tôi nghĩ đang gây ra tắc nghẽn. Máy chủ cụm trung tâm có 16 lõi và 64GB RAM. MAXDOP được đặt thành 0.

Tôi đoán CXPACKET là từ nhiều truy vấn song song đang chạy tuy nhiên tôi không chắc sự kiện chờ LATCH_EX đang chỉ ra điều gì. Từ những gì tôi đã đọc điều này có thể là một chờ đợi không đệm?

Bất cứ ai cũng có thể đề xuất nguyên nhân của các loại thống kê chờ đợi này là gì và tôi nên thực hiện hành động nào để điều tra nguyên nhân gốc rễ của vấn đề hiệu suất này?

Kết quả truy vấn hàng đầu là tổng số thống kê chờ và kết quả truy vấn dưới cùng là số liệu thống kê trong khoảng thời gian 1 giờ Mẫu chờ SQL


4
Bạn đã xem blog của Paul Randal trên Latch chờ chưa? sqlskills.com/blogs/paul/... Có khá nhiều thông tin hữu ích trong việc xác định những gì các phương tiện Chờ Latch bằng cách chọn từ sys.dm_os_latch_stats
Đánh dấu Sinkinson

CXPacket là khi luồng chính của truy vấn đang chờ trên các luồng song song để trả về. Để được giải thích tốt và một số cách để giảm bớt, hãy xem bài viết trên blog của Brent Ozar về chủ đề brentozar.com/archive/2013/08/ợi
RubberChickenLeader

Câu trả lời:


8

CXPACKET có thể được đi kèm với LATCH_XX (có thể với PAGEIOLATCH_XX hoặc SOS_SCHEDULER_YIELD). Nếu đây là trường hợp (và tôi tin là như vậy, dựa trên câu hỏi) thì giá trị MAXDOP nên được hạ xuống để phù hợp với phần cứng của bạn.

Bên cạnh đó, đây là một số bước được đề xuất hơn trong chẩn đoán nguyên nhân của các giá trị thống kê chờ đợi CXPACKET cao (trước khi thay đổi điều gì đó trên SQL Server):

  • Không đặt MAXDOP thành 1, vì đây không bao giờ là giải pháp

  • Điều tra truy vấn và lịch sử CXPACKET để hiểu và xác định xem đó có phải là điều xảy ra chỉ một hoặc hai lần không, vì đó có thể chỉ là ngoại lệ trong hệ thống thường hoạt động chính xác

  • Kiểm tra các chỉ mục và số liệu thống kê trên các bảng được sử dụng bởi truy vấn và đảm bảo chúng được cập nhật

  • Kiểm tra Ngưỡng chi phí cho tính song song (CTFP) và đảm bảo rằng giá trị được sử dụng là phù hợp với hệ thống của bạn

  • Kiểm tra xem CXPACKET có được kèm theo LCK_M_XX hay không (thường đi kèm với IO_COMPLETION và ASYNC_IO_COMPLETION). Nếu đây là trường hợp, thì song song không phải là nút cổ chai. Khắc phục sự cố những chỉ số chờ đợi đó để tìm ra nguyên nhân gốc rễ của vấn đề và giải pháp

Nếu bạn thực sự cần hiểu sâu về loại chờ đợi CXPACKET, tôi khuyên bạn nên đọc Khắc phục sự cố loại chờ đợi CXPACKET trong bài viết SQL Server



3

Ngoài việc đọc các liên kết được cung cấp ở trên và rất có thể thay đổi cài đặt "Mức độ song song tối đa" của bạn từ 0 thành thứ gì đó như 8, bạn sẽ muốn thu hẹp những truy vấn nào đang diễn ra song song và chi phí của chúng là bao nhiêu.

Sau khi thấy tác động của thay đổi này, bạn cũng có thể xem xét sửa đổi "Ngưỡng chi phí cho tính song song" của mình để tinh chỉnh những gì sẽ diễn ra song song.

Đây là một video tuyệt vời từ Brent Ozar sẽ giúp bạn: Làm chủ nghệ thuật của CXPACKET và MAXDOP

Mục tiêu của bạn là <= 50% thời gian chờ đợi cho CXPACKET. Chúc may mắn!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.