PAGELATCH_ * và WRITELOG cao chờ đợi. Họ có liên quan không?


11

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.


1
Nhìn vào một vấn đề rất giống với vấn đề này ngay lúc này ..
Dave Lawrence

Bạn đã xem xét các VLF có thể cao gây ra vấn đề chưa?
Kin Shah

@Kin bạn có nghĩa là trong điều kiện của một bản ghi nhật ký chậm vào đĩa đang mở một chốt PAGELATCH_EX và gây ra sự tranh chấp chốt?
Pixelated

Không có lý do gì việc triển khai SQL Server phải tạo bản ghi nhật ký dưới một chốt trang. Tại sao họ sẽ làm theo cách này? Không thể tin được. Ngoài ra, nếu việc ghi nhật ký được thực hiện theo patchlatch, bạn sẽ không bao giờ thấy WRITELOG chờ đợi. Chỉ có thể có một loại chờ được thực hiện tại một thời điểm.
usr

Câu trả lời:


1

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

Bạn phải lưu ý rằng chốt chỉ bảo vệ tính toàn vẹn vật lý của trang trong khi nó nằm trong bộ nhớ nên sẽ chốt khi trang nằm trong bộ nhớ. Giả sử một bản ghi đang được chèn và cho trang đó cần phải được tìm nạp. Đầu tiên, trang sẽ bị khóa và đưa vào bộ nhớ sau đó nó sẽ được chốt và thông tin sẽ được ghi lại. Quá trình sau này sẽ là

  • Tạo bản ghi nhật ký

  • Cập nhật trang LSN để khớp với bản ghi nhật ký

  • Thay đổi dữ liệu (làm bẩn trang)

  • Phát hành chốt

  • Cam kết bắt đầu giao dịch

  • FlushToLSN của Cam kết

  • Khóa phát hành

  • Hoàn thành giao dịch cam kết

Để biết thêm chi tiết và giải thích về các bước trên, vui lòng đọc blog trình bày I / O của Bob Dorr

Pagelatch * chờ đợi không phải là I / O chờ đợi và tôi đã thấy hầu hết thời gian chờ đợi này là nổi bật vì sự tranh chấp phân bổ. Linh cảm của tôi là nó phải làm một cái gì đó với làm thế nào tempdb is configured. Vậy tempdb của bạn được cấu hình như thế nào ?, Có bao nhiêu tệp dữ liệu tempdb? Hãy chắc chắn rằng chúng có cùng độ tự động và cùng kích thước. Khi trang mới được tạo, các trang hệ thống như GAM, các trang SGAM và PFS cần được cập nhật hoặc được truy cập và khi SQL Server tìm thấy sự tranh chấp khi truy cập các trang này, hãy chờ xem.


Xin chào @Shanky, dựa trên sys.dm_os_waiting_t Nhiệm.resource_description kết hợp với TRANG DBCC và loại PAGELATCH_ * Tôi đã loại trừ tempDB. Dựa trên chuỗi sự kiện của Bob Dorr, có vẻ như bước "Tạo bản ghi nhật ký" được hoàn thành trong cơ chế chốt?
Pixelated

3
Cả hai đều là các sự kiện loại trừ lẫn nhau, việc ghi trong tệp nhật ký không liên quan gì đến việc chốt máy chủ SQL duy nhất của nó theo giao thức WAL để ghi thông tin vào nhật ký trước khi thực sự thực hiện giao dịch
Shanky
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.