Tôi đang chạy lệnh sau để xóa hàng trong lô ra khỏi một bảng lớn (150 triệu hàng):Xóa hàng trong bảng nguyên nhân Locks
DECLARE @RowCount int
WHILE 1=1
BEGIN
DELETE TOP (10000) t1
FROM table t1
INNER JOIN table2 t2 ON t2.PrimaryKey = t1.PrimaryKey
WHERE t1.YearProcessed <= 2007
SET @RowCount = @@ROWCOUNT
IF (@RowCount < 10000) BREAK
END
Bảng này là rất cao sử dụng. Tuy nhiên, nó đang xóa hồ sơ, nhưng nó cũng gây ra khóa trên một số hồ sơ, do đó ném lỗi cho người dùng (mà không được chấp nhận trong môi trường chúng tôi đang ở).
Làm cách nào để xóa các bản ghi cũ hơn mà không gây ra khóa? Tôi có nên giảm kích thước của lô từ 10.000 bản ghi xuống 1000? Kích thước nhật ký hiệu ứng này sẽ như thế nào (chúng tôi có rất ít không gian ổ đĩa cứng còn lại để tăng trưởng nhật ký lớn).
Mọi đề xuất?
Đây có phải là điểm bắt đầu/kết thúc của mỗi lô hoặc xóa từng hàng không? – Sean