bạn có lý do chính đáng để lo ngại vì DB co lại trong SQL Server thường "hút". Paul Randal, người đứng đầu Công cụ lưu trữ trong SQL 2005 đã nêu, ShrinkDB được viết rất kém. Nó sẽ tìm không gian trống bằng cách lấy dữ liệu ở cuối và đặt nó vào đầu và tiếp tục làm điều này cho đến khi nó có không gian trống ở 'cuối' của các tệp DB. Tại thời điểm này, nó có thể giải phóng không gian từ SQL Server và trả lại cho HĐH. Bạn đang đảo ngược hiệu quả các tệp cơ sở dữ liệu của mình, do đó bạn sẽ thường thấy sự phân mảnh lớn. Bạn có thể đọc về quan điểm của anh ấy trên bài đăng trên blog này hoặc trên Video MCM Internals này
Như với tất cả mọi thứ, bạn thực sự phải kiểm tra những điều này trong môi trường của bạn đầu tiên. Một cách tốt hơn để làm điều đó là di chuyển dữ liệu đến một nhóm khác. Bạn có thể thực hiện xây dựng lại chỉ mục trực tuyến với chỉ mục được nhóm và sau đó reindex trong nhóm mới. Sau đó, bạn có thể thả cái cũ và giải phóng không gian và gần như không có sự phân mảnh. Lưu ý rằng điều này sẽ mất thêm khoảng 120% không gian trong khi nó đang hoạt động. Vấn đề với điều này là bạn cần thêm không gian trống mà có vẻ như bạn không có. Đây là một tính năng doanh nghiệp.
Nếu không gian trống ở mức cao như vậy, thì bạn có thể phải cắn viên đạn và từ từ thu nhỏ DB một đoạn nhỏ tại một thời điểm để tránh các quá trình chạy dài. Lưu ý rằng dữ liệu của bạn sẽ bị phân mảnh nhiều và bạn sẽ muốn giới thiệu lại mọi thứ một lần nữa. Lưu ý rằng sau khi giới thiệu lại mọi thứ, bạn sẽ tăng thêm không gian đã sử dụng một chút và quay lại để có thêm không gian trống. Xem lời khuyên của Brent tại đây .
Theo như bao nhiêu không gian trống là tốt cho bạn, là vấn đề bạn có thể chi trả bao nhiêu cho các hoạt động phân mảnh và tăng trưởng tệp. Khi bật IFI, tốc độ tăng trưởng tệp gần như ngay lập tức nhưng bạn vẫn bị phân mảnh. Một nguyên tắc nhỏ là phân bổ nhiều không gian như bạn nghĩ bạn sẽ cần, hoặc theo dõi sự tăng trưởng và điều chỉnh theo từng đợt nếu bạn phải. Điều này giữ cho sự phân mảnh vật lý xuống.
Ngoài ra tăng trưởng tập tin đăng nhập là rất quan trọng hơn nhiều. Các tệp nhật ký bổ sung có thể gây ra sự phân mảnh VLF. Điều này làm cho khôi phục của bạn chậm hơn rất nhiều và có thể ảnh hưởng đến điểm kiểm tra / cắt ngắn. Đây là một số rủi ro hiệu suất bạn có với một bản ghi phân mảnh. Làm một DBCC LOGINFO();
trên mỗi cơ sở dữ liệu. Cố gắng giữ số lượng khoảng 50ish mỗi Kim Tripp, nhưng nếu bạn thấy hàng trăm, bạn có vấn đề phân mảnh, điều đó có nghĩa là các tệp nhật ký của bạn phải phát triển để hỗ trợ các hoạt động. Một cách tốt để xem tệp nhật ký của bạn nên là gì theo Paul Randal là chỉ để nó phát triển trong một tuần và reindex. Đó có thể là một điểm tốt, có lẽ bạn có thể ném thêm một chút không gian trống vào đó chỉ trong trường hợp. Đảm bảo nhật ký của bạn không bị phân mảnh với DBCC LOGINFO (); một lần nữa và nếu có, điều đó có nghĩa là họ đã trưởng thành hơn rất nhiều. Thu nhỏ và mở rộng lại tệp nhật ký bằng cách sử dụngphương pháp này .