Các VLF nhật ký giao dịch quan trọng như thế nào đối với hiệu suất?


12

Các VLF quan trọng như thế nào khi xem xét hiệu suất cơ sở dữ liệu? Điều gì sẽ mô tả một tình huống tối ưu cho các VLF?


Để đọc thêm, hãy xem câu hỏi của tôi tại dba.stackexchange.com/questions/25408/ Khăn
Max Vernon

Thật tuyệt - Tôi có thể thấy điều này hữu ích để báo cáo về hiệu suất
the_good_pony

1
@DBAWaff Tham khảo: Các thử nghiệm với các VLF của SQL Server, Phần 1 từ Glenn Berry -> sqlskills.com/bloss/glenn/ mẹo
Kin Shah

Câu trả lời:


17

Một tệp nhật ký ảo là gì?

SQL Server chia tệp nhật ký giao dịch cho mỗi cơ sở dữ liệu thành các phần nhỏ hơn, được gọi là 'tệp nhật ký ảo' (hay gọi tắt là VLF). Chức năng chính của chúng là các dấu rút ngắn tại một bản sao lưu nhật ký, tức là SQL Server sẽ chỉ xóa (và đánh dấu có sẵn để sử dụng lại) các VLF hoàn toàn trống. MSDN có một phần trên Nhật ký giao dịch - Kiến trúc vật lý .

Điều gì quyết định số lượng VLF?

Mỗi khi tệp nhật ký phát triển (cho dù thông qua tăng trưởng tự động hoặc tăng trưởng thủ công), phần mới của tệp nhật ký được chia thành một số VLF, hoàn toàn dựa trên kích thước của phần mới (nhật ký giao dịch hiện tại được để riêng). Vì vậy, các cài đặt tự động tăng nhỏ (tức là 10% tự động tăng mặc định) sẽ khiến một số lượng lớn các VLF được tạo.

Ý nghĩa của một số lượng lớn các VLF là gì?

Vấn đề chính mà một số lượng lớn các VLF gây ra là:

  • Phục hồi chậm (phục hồi là một giai đoạn trong quá trình khôi phục cơ sở dữ liệu trong đó các giao dịch đã hoàn thành được ghi vào các trang dữ liệu và các giao dịch không hoàn chỉnh được khôi phục).
  • Hiệu suất đọc log chậm trong thiết lập phản ánh cơ sở dữ liệu.
  • Hiệu suất chậm trong quá trình tạo ảnh chụp nhanh cơ sở dữ liệu (lưu ý rằng điều này cũng bao gồm một số chức năng nhất định DBCCvì chúng sử dụng ảnh chụp nhanh cơ sở dữ liệu trong nền để tạo điều kiện kiểm tra tính nhất quán mà không bị chặn).

Làm cách nào để biết cơ sở dữ liệu của tôi có bao nhiêu VLF?

DBCC LOGINFOsẽ trả về 1 hàng cho mỗi VLF trong nhật ký giao dịch của cơ sở dữ liệu của bạn. Câu hỏi này có một vài tập lệnh hữu ích để áp dụng trên tất cả các cơ sở dữ liệu trên máy chủ.

Có bao nhiêu VLF là quá nhiều?

Đó là một lời kêu gọi phán xét bạn sẽ phải tự đưa ra. Nguyên tắc cá nhân của tôi là dưới 50 tuổi không đáng để làm phiền, và hơn 100 (hoặc hơn) và tôi sửa các cài đặt tự động phát triển và ghi chú tinh thần vào (trong cửa sổ bảo trì tiếp theo) thu nhỏ và lấy lại nhật ký (như bên dưới) .

Cứu giúp! Tôi có hàng trăm tỷ VLF và việc phục hồi cơ sở dữ liệu của tôi mất cả ngày!

Phác thảo ngắn (từ blog của Kimberly Tripp ):

  • Đảm bảo bạn là kết nối duy nhất hoạt động trong cơ sở dữ liệu (vì vậy, hãy thực hiện việc này trong cửa sổ bảo trì)
  • Sao lưu nhật ký giao dịch vào đĩa (sử dụng BACKUP LOG )
  • Chạy DBCC SHRINKFILEvớiTRUNCATEONLY để thu nhỏ tệp nhật ký đến kích thước nhỏ nhất có thể.
  • Chạy ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsizeđể thay đổi kích thước nhật ký giao dịch của bạn sao lưu trong một bước **.

** Lưu ý - nếu bạn có tệp nhật ký rất lớn (hàng chục GB trở lên), bạn có thể muốn thay đổi kích thước theo nhiều bước để có được số lượng VLF phù hợp với kích thước phù hợp để tránh sao lưu nhật ký 'chunky' quá mức. Vì các VLF là đơn vị cắt ngắn nên chúng cũng xác định kích thước sao lưu nhật ký, như chi tiết trong blog của Kim .


Cảm ơn, bạn có nghĩ rằng nhiều VLF rõ ràng sẽ cản trở hiệu suất trong môi trường OLTP cao, nơi dữ liệu được thay đổi thường xuyên, một số lượng lớn các cam kết phải trải qua?
the_good_pony

Số lượng lớn các VLF chỉ thực sự đáng chú ý trong các tình huống tôi đã nêu ở trên (phục hồi, chụp nhanh, phản chiếu). Chúng có thể cản trở hiệu suất một chút trong môi trường OLTP, nhưng chỉ một chút như vậy.
Simon Righarts

1
Đối với tôi, Phục hồi hơn 20 giờ là điều đã thuyết phục tôi về tầm quan trọng của việc duy trì số lượng VLF thấp (dưới 1.000).
Max Vernon

@SimonRigharts Tôi tò mò. Có một số lượng lớn các VLF ảnh hưởng đến hiệu suất giao dịch thường xuyên không? Hoặc nó chỉ tác động sao lưu và khôi phục?
Chris Aldrich

@ChrisAldrich Có thể có một số mức phí nhỏ trong giao dịch nếu nó vượt qua ranh giới VLF (nhưng nếu tôi không nghe thấy về nó), nhưng như chi tiết trong câu hỏi, lần duy nhất bạn sẽ thực sự nhận thấy tác động của một số lượng lớn các VLF là trong quá trình phục hồi, phản chiếu hoặc ảnh chụp nhanh.
Simon Righarts
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.