Từ những gì tôi có thể tìm thấy, cửa hàng phiên bản sẽ chỉ dọn sạch các phiên bản cũ hơn giao dịch hoạt động lâu đời nhất. Câu hỏi: Là cơ sở dữ liệu giao dịch cũ nhất cụ thể hay SQL Server sẽ giữ tất cả các phiên bản, bất kể cơ sở dữ liệu, nếu có một giao dịch cũ hơn vẫn còn hoạt động, thời gian?
Backstory - SQL Server 2005 SP4 Enterprise lưu trữ khoảng 40 cơ sở dữ liệu. TempDB hiện tại là 102 GB, cửa hàng phiên bản khoảng 98 GB. Một trong những ứng dụng được lưu trữ trên phiên bản cơ sở dữ liệu có giao dịch mở đã 40 ngày tuổi dựa trên sys.dm ... database_transilities. Hai cơ sở dữ liệu lớn riêng biệt đã sử dụng rất nhiều trong tháng trước và chúng tôi đã thấy sự tăng trưởng TempDB phù hợp trùng khớp với các hoạt động này. Chúng tôi dự kiến một số tăng trưởng. Chúng tôi không mong đợi nó sẽ tiếp tục phát triển. Câu hỏi: Các phiên bản được lưu trữ trong kho lưu trữ phiên bản của TempDB từ hai cơ sở dữ liệu riêng biệt này có còn bởi vì cơ sở dữ liệu độc lập thứ ba có kết nối 40 ngày và hiển thị giao dịch mở không?
Quầy Perfmon: Cửa hàng phiên bản liên tục phát triển trong vài giờ tôi đã theo dõi nó sáng nay. Tốc độ tạo phiên bản AVG khoảng 30 kb / s, Tốc độ dọn dẹp phiên bản là 0 kb / s.
Còn rất nhiều không gian cho TempDB, có khoảng 300 GB tổng số tệp dữ liệu cho tất cả các cơ sở dữ liệu người dùng, TempDB đã tăng trung bình 350 MB mỗi ngày cho mỗi 8 tệp dữ liệu kể từ lần khởi động lại cuối cùng. Hành vi này là bất thường và điều tra cho thấy các cửa hàng phiên bản lớn
Trả lời các câu hỏi bình luận để không có phần bình luận chạy dài:
Q: Tại sao tự động tăng trưởng trên tempdb? Trả lời: TempDB được thiết lập để khởi tạo ở kích thước mà chúng tôi thấy phù hợp với hầu hết thời gian. Chúng tôi cho phép tự động tăng trưởng để xử lý hoạt động cơ sở dữ liệu bất thường. Chúng tôi cũng theo dõi sự tăng trưởng tự động.
Q: Làm thế nào để bạn biết giao dịch đang hoạt động và không chỉ là một kết nối hoạt động? Trả lời: giao dịch_state cho biết hoạt động trong sys.dm_tran_active_snapshot_database_transilities và các công cụ khác. Activity Monitor cho biết mỗi kết nối có 1 giao dịch mở.
Q: Tại sao ứng dụng của bạn rất ngu ngốc? A: Bên thứ ba của nó. Một trong nhiều trường hợp này. Tôi không biết hành vi đó có bất thường hay dễ dàng sửa chữa không.
GIẢI QUYẾT
(Các) giao dịch mở nơi ngăn chặn mọi hoạt động dọn dẹp cửa hàng phiên bản, vì vậy Jon đã đúng, việc dọn dẹp cửa hàng phiên bản được thực hiện độc lập với cơ sở dữ liệu. Đóng các giao dịch vi phạm cho phép dọn dẹp cửa hàng phiên bản bắt đầu. Lý thuyết hiện tại đằng sau lý do từ Jon Seigel
Cửa hàng phiên bản chỉ có thể xóa các phiên bản dựa trên giao dịch hoạt động lâu đời nhất trong toàn bộ phiên bản, để hỗ trợ sử dụng cách ly ảnh chụp nhanh cấp độ giao dịch trên nhiều cơ sở dữ liệu cùng một lúc.
Nếu ai biết chắc chắn hoặc có thể chứng minh điều này xin vui lòng làm
Câu hỏi tham khảo: find-giao dịch-đó-đang-điền-lên-phiên bản-cửa hàng
Tài liệu tham khảo: TempDB
2005 WP
Teratrax điều chỉnh tempDB
Idera Làm sáng tỏ Tempdb
begin_time
giá trị cho giao dịch đang hoạt động là gì?