Triệu chứng
Giả sử bạn có một Nhóm tính sẵn sàng (AG) Luôn bật trong SQL Server 2016 và 2017. Khi bạn xử lý truy vấn đọc trên bản sao phụ, hiệu suất có thể chậm hơn nhiều so với bản sao chính do phải chờ DIRTY_PAGE_TABLE_LOCK thường xuyên.
Nguyên nhân
Sự cố này xảy ra do có sự tranh chấp giữa truy vấn đọc và chuỗi làm lại, cũng như vì bảng bị khóa.
Giải pháp
Bản sửa lỗi này được bao gồm trong các bản cập nhật sau dành cho SQL Server:
Bản cập nhật tích lũy 8 cho SQL Server 2017
Bản cập nhật tích lũy 1 cho SQL Server 2016 Gói Dịch vụ 2
Bản cập nhật tích lũy 9 cho SQL Server 2016 Gói Dịch vụ 1
Giới thiệu về bản dựng SQL Server
Mỗi bản dựng mới cho SQL Server đều chứa tất cả bản sửa lỗi nóng và bản sửa lỗi bảo mật trong bản dựng trước đó. Chúng tôi khuyên bạn nên cài đặt bản dựng mới nhất cho phiên bản SQL Server của mình:
Bản cập nhật tích lũy mới nhất cho SQL Server 2017
Bản dựng mới nhất cho SQL Server 2016
Giải pháp thay thế
Để khắc phục sự cố này, bạn có thể sử dụng một chuỗi làm lại đơn thay vì một chuỗi làm lại song song bằng cách bật Theo dõi Cờ 3459.
Xem thêm thông tin
Khi các truy vấn chỉ đọc đang chạy trên bản sao phụ có thể đọc, các chuỗi truy vấn sẽ cố gắng áp dụng các thao tác làm lại nhật ký đang chờ và cần cộng tác với các chuỗi nhân viên làm lại có thời gian chờ DIRTY_PAGE_TABLE_LOCK , điều này có thể thường xuyên được tạo và làm chậm cả hiệu suất làm lại và truy vấn nếu có khối lượng công việc làm lại đồng thời. Sự cố về hiệu suất liên quan đến việc chờ DIRTY_PAGE_TABLE_LOCK đã được giải quyết trong bản phát hành cập nhật tích lũy cho SQL Server 2016 SP và SQL Server 2017 được đề cập trong bài viết này.
Để biết thêm thông tin, bạn có thể xem blog sau về Nhóm tính sẵn sàng mô hình làm lại bản sao phụ và hiệu suất.
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.