Có nhiều tùy chọn SQL Server có thể được kích hoạt cho cơ sở dữ liệu và một trong những tùy chọn bị hiểu lầm nhất là tự động thu nhỏ. Nó có an toàn không? Nếu không, tai sao không?
Có nhiều tùy chọn SQL Server có thể được kích hoạt cho cơ sở dữ liệu và một trong những tùy chọn bị hiểu lầm nhất là tự động thu nhỏ. Nó có an toàn không? Nếu không, tai sao không?
Câu trả lời:
(Ban đầu tôi hỏi như một câu hỏi thông thường nhưng sau đó tìm ra phương pháp đúng - cảm ơn BrentO)
Không bao giờ.
Tôi đã bắt gặp điều này nhiều lần trên ServerFault và muốn tiếp cận đối tượng rộng đẹp với một số lời khuyên tốt. Nếu mọi người cau mày với cách làm việc này, hãy downvote và tôi sẽ loại bỏ điều này một cách vui vẻ.
Tự động thu nhỏ là một cài đặt cơ sở dữ liệu rất phổ biến đã được bật. Có vẻ như là một ý tưởng tốt - loại bỏ không gian thừa từ cơ sở dữ liệu. Có rất nhiều 'DBA không tự nguyện' ngoài kia (nghĩ rằng TFS, SharePoint, BizTalk hoặc chỉ là SQL Server cũ thông thường) có thể không biết rằng tự động thu nhỏ là xấu tích cực.
Trong khi tại Microsoft, tôi đã từng sở hữu Công cụ lưu trữ máy chủ SQL và đã cố gắng loại bỏ tính năng tự động thu nhỏ, nhưng nó phải ở lại để tương thích ngược.
Tại sao tự động thu nhỏ lại rất tệ?
Cơ sở dữ liệu có khả năng chỉ phát triển trở lại, vậy tại sao lại thu nhỏ nó?
Tôi đã viết một bài blog một lúc trước có một đoạn mã SQL ví dụ cho thấy các vấn đề mà nó gây ra và giải thích chi tiết hơn một chút. Xem Tự động thu nhỏ - TẮT nó! (không có quảng cáo hoặc rác như thế trên blog của tôi). Đừng nhầm lẫn điều này với việc thu nhỏ tệp nhật ký, đôi khi rất hữu ích và cần thiết.
Vì vậy, hãy ủng hộ - tìm trong cài đặt cơ sở dữ liệu của bạn và tắt tự động thu nhỏ. Bạn cũng không nên thu hẹp trong kế hoạch bảo trì của mình, vì lý do chính xác như vậy. Truyền bá cho các đồng nghiệp của bạn.
Chỉnh sửa: Tôi nên thêm điều này, được nhắc nhở bởi câu trả lời thứ hai - có quan niệm sai lầm phổ biến rằng làm gián đoạn một hoạt động thu nhỏ có thể gây ra tham nhũng. Không, nó sẽ không. Tôi đã từng sở hữu mã thu nhỏ trong SQL Server - nó quay lại di chuyển trang hiện tại mà nó đang làm nếu bị gián đoạn.
Hi vọng điêu nay co ich!
Tất nhiên, Paul đúng.
Xem tất cả các DB và cài đặt tự động thu nhỏ của chúng. Nếu bạn có nhiều cơ sở dữ liệu, người ta sẽ lẻn vào.
sp_msforeachdb @command1 = 'Select ''[?]'',DATABASEPROPERTYEX(''?'',''IsAutoShrink'')'
Đây có phải là ở đâu đó của dmv .... Tôi tự hỏi.
Nó không "không an toàn" - nó sẽ không làm hỏng bất cứ thứ gì.
Nhưng nó không được khuyến nghị cho các môi trường sản xuất nơi cơ sở dữ liệu có thể quyết định tắt và bắt đầu một bài tập sắp xếp lại đắt tiền ngay trước khi một đống yêu cầu xuất hiện khiến những yêu cầu đó mất nhiều thời gian hơn để được phục vụ. Bạn sẽ tốt hơn nhiều khi sử dụng lập lịch các hoạt động thu nhỏ cùng với các hoạt động bảo trì khác như sao lưu (thực ra là sau khi sao lưu - sẽ nhiều hơn từ nhật ký giao dịch theo cách đó). Hoặc hoàn toàn không thu hẹp trừ khi có vấn đề về tăng trưởng - bạn luôn có thể thiết lập màn hình để cho bạn biết khi không gian được phân bổ không sử dụng tăng vượt quá tỷ lệ nhất định hoặc kích thước cố định.
IIRC tùy chọn tắt theo mặc định cho tất cả các cơ sở dữ liệu trong tất cả các phiên bản MSSQL ngoại trừ Express.
Có một whitepaper có sẵn trên TechNet giải thích chi tiết hơn về bảo trì SQL.
http://technet.microsoft.com/en-us/l Library / cc262731.aspx
Tôi đã thấy một máy chủ SQL có bật cả Autogrow và Autoshrink. Máy chủ (tương đối mạnh) này hoạt động rất chậm, bởi vì tất cả những gì nó làm cả ngày là thu nhỏ và phát triển các tệp cơ sở dữ liệu. Autoshrink có thể hữu ích, nhưng tôi khuyên bạn nên hai điều:
Lần duy nhất tôi bị buộc phải thu hẹp cơ sở dữ liệu là làm mới một bản sao trên máy chủ thử nghiệm với ít dung lượng đĩa hơn (không đủ để giữ cơ sở dữ liệu sản xuất).
(Các) tệp của cơ sở dữ liệu sản xuất có không gian trống rộng rãi, thật không may, bạn phải khôi phục cơ sở dữ liệu có cùng kích thước tệp như bạn đã sao lưu. Vì vậy, không có lựa chọn nào ngoài việc thu hẹp sản xuất trước khi sao lưu. (Việc thu hẹp mất nhiều thời gian, rất nhiều tài nguyên đã được tiêu thụ và sự tăng trưởng nhật ký giao dịch tiếp theo là có vấn đề.)
Ngoài ra hãy xem video hướng dẫn này ....
Xem Paul Randal chứng minh cách thu nhỏ và tự động thu nhỏ có thể gây ra sự cố phân mảnh nghiêm trọng cho cơ sở dữ liệu của bạn http://wtv.watchtechideo.com/topic194.html