Tệp sao lưu cơ sở dữ liệu SQL Server có kích thước gấp đôi cho đến khi sao lưu hoàn tất


7

Tôi vừa hoàn thành việc viết một câu lệnh sao lưu cho cơ sở dữ liệu khá lớn (1,3 TB) và tôi đã thử nghiệm nó bằng cơ sở dữ liệu nhỏ hơn nhiều (tệp nhật ký 10 GB + 10 GB). Các bản sao lưu ghi đến ba điểm đến. Trong quá trình thử nghiệm, tôi nhận thấy rằng trong khi bản sao lưu đang chạy, mỗi tệp sao lưu có kích thước khoảng 1,2 GB, nhưng sau khi quá trình sao lưu hoàn tất, các tệp sẽ co lại dưới 600 MB.

Tôi muốn biết:

  • Tại sao các tệp lớn hơn trong quá trình sao lưu và sau đó thu nhỏ?
  • cho dù có cách nào để ngăn chặn điều này,
  • các tệp có khả năng lớn đến mức nào khi tôi sao lưu cơ sở dữ liệu 1,3 TB đó - nếu các tệp lại tăng gấp đôi kích thước cuối cùng thì tôi có thể phải yêu cầu thêm dung lượng đĩa!

Đây là câu lệnh sao lưu mà tôi đang sử dụng:

BACKUP DATABASE @DatabaseName
TO  DISK = @backupMedia1,
    DISK = @backupMedia2,
    DISK = @backupMedia3
WITH COMPRESSION, RETAINDAYS = 0, NOFORMAT, INIT, NOSKIP, NAME = @DatabaseName

Câu trả lời:


8

Đây là một vấn đề đã biết và hành vi dự kiến ​​(nó là do thiết kế). Về cơ bản, bản sao lưu dự trữ tổng dung lượng mà nó nghĩ rằng nó có thể cần, sau đó thu nhỏ lại như bước cuối cùng. Để thay đổi hành vi, bạn có thể thử nghiệm với cờ theo dõi 3042. Từ http://msdn.microsoft.com/en-us/l Library / bb964719.aspx # Allocation :

Đối với các bản sao lưu nén, kích thước của tệp sao lưu cuối cùng phụ thuộc vào mức độ nén của dữ liệu và điều này không xác định trước khi hoạt động sao lưu kết thúc. Do đó, theo mặc định, khi sao lưu cơ sở dữ liệu bằng cách nén, Cơ sở dữ liệu sử dụng thuật toán phân bổ trước cho tệp sao lưu. Thuật toán này phân bổ trước một tỷ lệ phần trăm được xác định trước về kích thước của cơ sở dữ liệu cho tệp sao lưu. Nếu cần thêm dung lượng trong quá trình sao lưu, Cơ sở dữ liệu sẽ phát triển tệp. Nếu kích thước cuối cùng nhỏ hơn không gian được phân bổ, khi kết thúc hoạt động sao lưu, Cơ sở dữ liệu sẽ thu nhỏ tệp về kích thước thực tế cuối cùng của bản sao lưu.

Để cho phép tệp sao lưu chỉ phát triển khi cần để đạt kích thước cuối cùng, hãy sử dụng cờ theo dõi 3042. Cờ theo dõi 3042 khiến thao tác sao lưu bỏ qua thuật toán cấp phát nén sao lưu mặc định. Cờ theo dõi này rất hữu ích nếu bạn cần tiết kiệm dung lượng bằng cách chỉ phân bổ kích thước thực tế cần thiết cho bản sao lưu nén. Tuy nhiên, sử dụng cờ theo dõi này có thể gây ra một hình phạt hiệu suất nhẹ (có thể tăng thời lượng của hoạt động sao lưu).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.