Cơ sở dữ liệu SQL Server có ghi chậm hơn với cách ly Snapshot không?


8

Tôi có rất nhiều bế tắc đang diễn ra trong hệ thống của mình.

Tôi muốn sử dụng Snapshot Isolation để sửa chúng, nhưng DBA của tôi có dự trữ về nó.

Một trong những mối quan tâm của anh ấy là Snapshot Isolation làm chậm việc viết. Điều này là do nó phải ghi vào bộ đệm và sau đó đến TempDb (phiên bản hàng) và sau đó nó có thể quay lại người gọi.

Một ghi "bình thường" chỉ có thể ghi vào bộ đệm và sau đó được thực hiện.

Đây có phải là cách hoạt động của phiên bản hàng? Hay nó phức tạp hơn thế? Liệu nó bằng cách nào đó làm những điều này song song?

Hoặc là viết chậm hơn với Snapshot Isolation?


2
Một vấn đề cần chú ý khi bạn bật cách ly ảnh chụp nhanh: kích thước hàng của bạn sẽ tăng thêm 14 byte. Hãy chắc chắn rằng bạn đã lên kế hoạch cho việc tăng công suất này và mọi phân chia trang kết quả.
StanleyJohns

Câu trả lời:


14

là bởi vì nó phải ghi vào bộ đệm và sau đó đến TempDb (phiên bản hàng) và sau đó nó có thể quay lại người gọi.

Không, điều này không chính xác. Nó bằng cách nào đó ngụ ý rằng việc ghi trong sự hiện diện của phiên bản có độ trễ cao hơn vì mỗi lần ghi phải chạm vào đĩa (đối với tempdb) là không đúng. Việc ghi vào tempdb cũng là ghi vào 'bộ đệm'. "Chờ" duy nhất xảy ra vào thời điểm CAM KẾT khi nhật ký phải được làm cứng. Đúng là với phiên bản cả nhật ký DB và nhật ký tempdb phải được làm cứng, nhưng điều này không nhất thiết có độ trễ cao hơn (IO nên được đặt ngang trên các đường lưu trữ khác nhau, tempdb được lưu trữ trên ổ đĩa riêng biệt từ LDF được sử dụng nhiều của bạn, đúng?). Để được giải thích đầy đủ, hãy đọc Cách thức hoạt động: Bản trình bày I / O SQL Server của Bob Dorr Tôi thực sự hy vọng DBA của bạn hiểu điều này tốt hơn là bạn đang truyền đạt nó ở đây.

Như tôi đã đề cập trong bài đăng khác của bạn: ảnh chụp nhanh không có chi phí cho INSERTS và chi phí cho các cập nhật và xóa có thể dễ dàng được giảm nhẹ. Sử dụng tài nguyên phiên bản hàng giải thích sự đánh đổi. Tại thời điểm này, có lẽ bạn nên thử nghiệm với khối lượng công việc thực tế, đó là cách duy nhất để khẳng định đúng tác động mà bạn sẽ trải qua.


4
BTW xem xét điều này: bạn, hoặc DBA của bạn, đã bao giờ sử dụng Triggers trong 7 năm qua chưa? Vì các kích hoạt SQL 2005 được triển khai bằng cách sử dụng ảnh chụp nhanh phía sau hậu trường. Tương tự như vậy nếu bạn từng sử dụng xây dựng lại chỉ mục trực tuyến hoặc MARS . Làm thế nào về nếu bạn kiểm tra ngay bây giờ sys.dm_db_file_space_usagetrên máy chủ sản xuất của bạn. Nếu version_store_reserved_page_countkhác không, bạn đã sử dụng phiên bản .
Remus Rusanu

Tôi không nghĩ rằng nhật ký tempdb phải được làm cứng bởi vì làm lại không bao giờ được chạy trên tempdb. Vì vậy, chi phí thậm chí còn thấp hơn.
usr

0

Tôi tin rằng có những vấn đề khác trong ứng dụng nếu bạn đang gặp bế tắc. Cách ly ảnh chụp thường giúp giảm các khóa chờ nhưng gốc của các khóa chết thường là các phương thức truy cập khác nhau trong ứng dụng cần được ngăn chặn bằng cách tuân thủ một mẫu nhất quán. Các cuộc thảo luận về bế tắc rất phức tạp và có nhiều tài nguyên dành riêng cho chúng.

DBA của bạn có quyền có một số lo ngại về việc thay đổi mức cô lập thành ảnh chụp nhanh vì nó làm tăng tải trên tempDB. Tôi khuyên bạn nên đi cách ly ảnh chụp nói chung, nhưng tôi nghĩ đó chỉ là một phần để giải quyết những bế tắc của bạn. Bạn có thể kết thúc bằng việc ghi bẩn, trong đó một giao dịch cập nhật hàng A rồi B ​​và một giao dịch khác cập nhật hàng B rồi A.

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.