Khi sao lưu được tạo, SQL Server sẽ đoán (?) Kích thước của tệp sao lưu nội bộ. Sau này, có thể khi nó nối thêm nhật ký, kích thước sẽ được điều chỉnh lại, đôi khi nhiều lần cho đến khi đạt được kích thước cuối cùng. Sự khác biệt càng lớn, sao lưu càng mất nhiều thời gian. (so với bản sao lưu khác mà kích thước không được điều chỉnh nhiều về sau). Ví dụ: Cơ sở dữ liệu1 (kích thước 500 GB, nhật ký 70 GB được sử dụng) được sao lưu bằng nén. Tệp .bak được tạo với kích thước 85 GB, sau một thời gian sử dụng CPU tăng lên và tôi có thể thấy rằng tệp .bak được điều chỉnh lại thành 136 GB, điều này xảy ra một lần nữa cho đến khi kích thước cuối cùng là 178 GB cho bản sao lưu đạt.
Khi các tính toán lại này xảy ra, tốc độ sao lưu trung bình tính bằng MB / s sẽ giảm so với các bản sao lưu khác trên cùng một máy. Là duy nhất đến từ việc nối thêm và xóa nhật ký? Hoặc cũng vì các loại dữ liệu khác nhau được sử dụng trong cơ sở dữ liệu? Có nghĩa là chúng được nén với tốc độ nén khác nhau, hoặc bất cứ điều gì?
Tôi đã đến chủ đề này, vì tôi biết rằng các bản sao lưu của tôi mất khoảng 30 phút, nhưng bây giờ phải mất 1,5 giờ mặc dù cơ sở dữ liệu không tăng đến 300% kích thước của nó. Nó chỉ tăng 30%.
Sử dụng số liệu thống kê chờ tôi có thể thấy rằng ngoài BackupIO, tôi cũng đang chờ CPU (SOS_SCHEDULER_YIELD) tại một số điểm.
Machine Details:
VMWare 6.0
32 GB of Memory (Max memory 28GB given to SQL Server)
2 logical CPU
Max Degree of Parallelism (1, it's a Sharepoint 2013)
SQL Server 2014
Windows Server 2012 R2
running on an SSD Raid (5)
Tất nhiên tôi đã kích hoạt khởi tạo tập tin ngay lập tức cho người dùng chạy sao lưu.
pre-allocation algorithm
. Kích thước có thể thay đổi khi quá trình sao lưu tiến triển và phụ thuộc vào mức độ sao lưu có thể nén được. đọc Nén sao lưu