2017-10-18 13 views
6

Tôi có bảng trong sql server có các dữ liệu sau từ exec sp_spaceusedbao nhiêu sẽ là transactionlog phát triển khi thực hiện một số lượng nhất định xóa hàng

rows  reserved   data    index_size   unused 
182515  16721960 KB  16563768 KB  14920 KB   143272 KB 

Tôi muốn xóa 38693 hàng. Đây có phải là cách đúng để tính toán trong một ước tính sơ bộ bao nhiêu log giao dịch có thể tăng trong xóa này?

(38693/182515)*16721960 KB nhiều nhất? 3.544 GB

Bất kỳ ai cũng có thể giúp tôi.

+0

xem điều này có giúp https://dba.stackexchange.com/questions/25531/how-can-i-get-the-actual-data-size-per-row-in-a-sql-server-table – Amit

Trả lời

0

Ước tính của bạn (dữ liệu 16 GB/182.515 hàng) X 38,693 hàng trông giống như một ước tính hợp lý.

Ước tính khác là lấy kích thước hàng trung bình và nhân số lần số hàng bạn muốn xóa.

Ví dụ: truy vấn này sẽ giúp bạn có được kích thước bản ghi trung bình của một bảng được nhóm. Nó có thể mất một thời gian để trở lại cho các bảng lớn:

select avg_record_size_in_bytes * 38693/1024.0 as [MB] 
from sys.dm_db_index_physical_stats(db_id(), object_id('MyTable'), 1, 0, 'Sampled') 

Để có thêm chắc chắn, bạn có thể khôi phục lại một bản sao lưu của cơ sở dữ liệu trên máy chủ thử nghiệm và đo lường hiệu quả của việc xóa đó.

Các vấn đề liên quan