Tôi thấy nó hữu ích khi thực hiện xóa khỏi bảng với một số lượng lớn hàng để xóa các hàng theo lô, chẳng hạn như 5000 hoặc lâu hơn (tôi thường kiểm tra để xem giá trị nào hoạt động nhanh nhất, đôi khi là 5000 hàng, đôi khi là 10.000, v.v.) . Điều này cho phép mỗi thao tác xóa hoàn thành nhanh chóng, thay vì đợi lâu cho một câu lệnh để loại bỏ 400 triệu bản ghi.
Trong SQL Server 2005, một cái gì đó như thế này sẽ hoạt động (tất nhiên là hãy kiểm tra trước):
WHILE EXISTS ( SELECT * FROM giganticTable WHERE exp_date < getDate())
BEGIN
DELETE TOP(5000) FROM giganticTable WHERE exp_date < getDate()
END
Tôi sẽ thấy những gì xóa hàng loạt ảnh hưởng đến kích thước tệp nhật ký. Nếu nó vẫn làm hỏng nhật ký, thì bạn có thể thử thay đổi Mô hình khôi phục thành Đơn giản , xóa các bản ghi, sau đó chuyển trở lại Bulk Logged, nhưng chỉ khi hệ thống có thể chịu được việc mất một số dữ liệu gần đây. Tôi chắc chắn sẽ tạo một Bản sao lưu đầy đủ trước khi thử quy trình đó. chuỗi này cũng gợi ý rằng bạn có thể thiết lập một công việc để sao lưu các bản ghi chỉ được chỉ định cắt ngắn, vì vậy đó có thể là một tùy chọn khác. Hy vọng rằng bạn có một phiên bản mà bạn có thể kiểm tra, nhưng tôi sẽ bắt đầu với việc xóa theo đợt để xem điều đó ảnh hưởng như thế nào đến hiệu suất và kích thước tệp nhật ký.