Tôi có một truy vấn mất nhiều thời gian ở giữa giao dịch. Khi tôi nhận được số wait_type
của quá trình, nó là PAGEIOLATCH_SH
.Kiểu chờ PAGEIOLATCH_SH trong SQL Server là gì?
Loại chờ đợi này có ý nghĩa gì và cách này có thể được giải quyết?
Tôi có một truy vấn mất nhiều thời gian ở giữa giao dịch. Khi tôi nhận được số wait_type
của quá trình, nó là PAGEIOLATCH_SH
.Kiểu chờ PAGEIOLATCH_SH trong SQL Server là gì?
Loại chờ đợi này có ý nghĩa gì và cách này có thể được giải quyết?
Từ MSDN:
PAGEIOLATCH_SH
Xảy ra khi một nhiệm vụ đang chờ đợi vào một chốt cho một bộ đệm đó là trong một yêu cầu
I/O
. Yêu cầu chốt đang ở chế độ Chia sẻ. Chờ đợi lâu có thể cho biết vấn đề với hệ thống con đĩa.
Thực tế, điều này hầu như luôn xảy ra do quét lớn trên các bảng lớn. Nó hầu như không bao giờ xảy ra trong các truy vấn sử dụng các chỉ mục một cách hiệu quả.
Nếu truy vấn của bạn là như thế này:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, kiểm tra xem bạn có một chỉ số tổng hợp trên (col1, col_primary_key)
.
Nếu bạn không có, thì bạn sẽ cần hoặc là nếu PRIMARY KEY
được chọn hoặc SORT
nếu chỉ mục trên col1
được chọn.
Cả hai đều rất đĩa I/O
hoạt động tiêu thụ trên các bảng lớn.
Đó là một truy vấn đơn giản thực sự. Chọn * từ
Bạn có thể đề xuất một số tài nguyên để tìm hiểu sự hiểu biết của bạn về đĩa chuyên sâu hay không, cái gì yêu cầu quét toàn bộ chỉ mục, yêu cầu sắp xếp vv –
@GregB: nếu bạn đã có kiến thức cơ bản về SQL, bạn có thể đọc sách của Joe Celko (tất cả chúng nhưng đặc biệt là 'SQL cho Smarties' và' Suy nghĩ trong Bộ') và blog của tôi tất nhiên :) – Quassnoi
PAGEIOLATCH_SH
loại chờ thường xuất hiện dưới dạng kết quả của chỉ mục bị phân mảnh hoặc không được tối ưu hóa.Thường nguyên nhân quá mức loại
PAGEIOLATCH_SH
chờ đợi là:Để cố gắng và giải quyết có cao
PAGEIOLATCH_SH
loại chờ đợi, bạn có thể kiểm tra:PAGEIOLATCH_SH
Luôn ghi nhớ rằng trong trường hợp có độ an toàn cao Tính năng sao chép hoặc cam kết đồng bộ trong AlwaysOn AG, có thể tăng/quá mức
PAGEIOLATCH_SH
.Bạn có thể tìm thêm thông tin chi tiết về chủ đề này trong bài viết Handling excessive SQL Server PAGEIOLATCH_SH wait types
Nguồn
2017-11-10 16:07:46
Các vấn đề liên quan