Tôi đang chạy một cơ sở dữ liệu giao dịch cao (trung bình ~ 175k giao dịch / phút, gần 9 triệu bản ghi mỗi giờ được thêm và xóa)
Cho đến gần đây, điều này không phải là vấn đề quá lớn vì chúng tôi đã có ~ 7,5 triệu bản ghi được thêm và xóa nhưng với luồng dữ liệu mới nhất, việc dọn dẹp ma dường như không thể theo kịp việc dọn dẹp không gian không sử dụng trên bảng / chỉ mục.
Vài ngày trước, chúng tôi đã đạt tới 53 GB 'Không gian chưa sử dụng' trên 16 bảng (chủ yếu là 2 bàn), do đó, bắt đầu xem xét quá trình dọn dẹp ma để thấy nó chạy cứ sau 5 giây và chạy trên 10 trang.
Giải pháp hiện tại của tôi là sáng sớm tôi đang chạy ba luồng lệnh sau:
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
để bắt kịp với các hồ sơ tồn đọng từ đêm hôm trước (khi hầu hết các lần xóa của chúng tôi diễn ra)
Tôi tự hỏi liệu có cách nào để thay đổi cài đặt mặc định từ 5 giây và 10 trang để nói mỗi giây hoặc chạy hơn 20 trang không, có cách nào để làm điều đó hay tôi nên tiếp tục quay vòng nhiều chương trình dọn dẹp để xóa dữ liệu hoặc nếu có bất kỳ hành động nào khác có thể hỗ trợ việc này
Lập chỉ mục lại chạy trên hầu hết các chỉ số bị ảnh hưởng ít nhất một lần một tuần (hầu hết là mỗi ngày)
SQL Server 2012 Enterprise SP3_CU8 (nâng cấp lên CU9 vào ngày mai) trên cụm Luôn sẵn sàng cao có sẵn với bản sao (phân phối trên một máy chủ riêng biệt)