Chúng tôi đang thấy các loại chờ PAGELATCH_EX và PAGELATCH_SH rất cao cùng với các chờ đợi WRITELOG cao. Tôi đã chẩn đoán truy vấn khiến PAGELATCH chờ đợi và có thể loại bỏ chúng bằng cách giảm tốc độ chèn vào khóa chính được phân cụm bận rộn được xác định bằng giá trị IDENTITY. Tôi hiểu rằng hiện tượng này được gọi là trang cuối cùng chèn chốt.
Tuy nhiên, câu hỏi của tôi là khi một bản ghi mới được chèn, SQL Server có PAGELATCH_EX độc quyền trên trang bộ đệm, chèn bản ghi vào trang bộ đệm, ghi bản ghi vào nhật ký giao dịch và sau đó phát hành PAGELATCH_EX độc quyền như chi tiết https: // www.microsoft.com/en-ie/d Download / dails Thông tin cơ bản Hướng dẫn của SQLCAT về: Công cụ quan hệ
Nếu bản ghi được ghi để đăng nhập bên ngoài cơ chế chốt thì tôi có thể loại trừ việc ghi chậm vào đĩa là nguyên nhân của sự chờ đợi PAGELATCH cao. Nhưng nếu chốt được giữ cho đến khi bản ghi được cứng lại để đăng nhập thì có lẽ tôi nên xem xét WRITELOG.
Ngoài ra, việc có nhiều chỉ mục không được phân cụm có khiến cho chốt PAGELATCH_ * được giữ lâu hơn hay không, nếu một bảng có một cụm và nhiều chỉ mục không được nhóm đồng thời được thêm vào và phát hành cho mỗi trang bộ đệm chỉ mục?
Cập nhật 1 Sau khi đọc confio-sql-server-writelog-Wait slide hai và kiến trúc WAL chung. Bây giờ tôi đã hiểu rằng bước "Ghi lại mục nhật ký mà hàng đã được sửa đổi" chi tiết trong cả hai trang trắng đều đề cập đến SQL Server ghi nhật ký thay đổi trong bộ đệm nhật ký giao dịch, không phải đĩa. Khi giao dịch hoàn tất hoặc bộ đệm đầy đủ, tất cả các bản ghi sẽ được xóa ngay lập tức vào đĩa.