Lý do vô hiệu hóa cập nhật tự động?


13

Tôi mới biết rằng một công ty khách hàng mà tôi làm việc đã quyết định tắt các tùy chọn thống kê cập nhật tự động cho một số Máy chủ SQL của họ và các DBA tự khắc phục sự cố các vấn đề về hiệu suất khi chúng phát sinh.

Tuy nhiên, loại này không có ý nghĩa với tôi. Tại sao bạn muốn ngăn chặn số liệu thống kê được cập nhật?

Câu trả lời:


11

Lời khuyên của tôi:

  • Để lại 'số liệu thống kê cập nhật tự động' (cho đến khi bạn không có lý do chính đáng nào) - bạn không muốn xóa lớn vào giữa một ngày để loại bỏ các kế hoạch truy vấn cho đến lần tiếp theo bạn chạy bảo trì.
  • Tuy nhiên, lịch trình bảo trì / cập nhật chỉ số thống kê tại một thời điểm yên tĩnh. sp_updatestatssẽ cập nhật tất cả các số liệu thống kê cho tất cả các bảng trong cơ sở dữ liệu cho bạn, nhưng điều đó cũng sẽ gây ra các biên dịch lại được lưu trữ, vì vậy hãy chọn thời gian của bạn một cách cẩn thận (tức là sp_updatestatsngay trước khi báo cáo cuối tháng của bạn có thể không tối ưu).

Tần suất bạn cần chạy chỉ số bảo trì / xây dựng lại chỉ số phụ thuộc vào tải cơ sở dữ liệu của bạn, cụ thể là tần suất dữ liệu của bạn được sửa đổi (tức là INSERT/ UPDATE/ DELETE). Nếu bạn đang sửa đổi dữ liệu trên toàn chương trình (ví dụ: bảng phân tầng cho quy trình theo đợt hàng tuần), bạn có thể muốn cập nhật số liệu thống kê / sắp xếp lại các chỉ mục hàng đêm. Nếu dữ liệu của bạn khá tĩnh hơn, bạn có thể đặt lịch hàng tuần hoặc hai tuần một lần.


7

Tôi chỉ nhìn thấy nó một lần với một ứng dụng tồi có đống dữ liệu bị lập chỉ mục kém và có ETL nặng.
Đây là rác rưởi và may mắn không phải của tôi.

Nếu không, không có lý do.

Nếu bạn đang nhận được cập nhật thống kê vào những thời điểm không phù hợp thì điều đó có nghĩa là bạn đang thực hiện bảo trì chỉ mục / chỉ số không chính xác hoặc có số lần xóa / tải lớn chạm ngưỡng.

Với SQL Server 2005+, bạn vẫn có thể trì hoãn cập nhật số liệu thống kê.
Xem "Khi nào nên sử dụng Cập nhật thống kê đồng bộ hoặc không đồng bộ"

Thật thú vị khi xem bài viết nào họ đã theo dõi hoặc đọc về để đưa ra lựa chọn này ...


Nó có thể là một vấn đề di sản? Được bảo trì thống kê khác nhau trong 2k?
JNK

@JNK: IIRC một số thay đổi đối với ngưỡng thay đổi hàng nhưng tôi phải tìm kiếm ... ah vâng, hiện được theo dõi trên mỗi cột không phải trên mỗi bảng msdn.microsoft.com/en-us/l Library
gbn

Có phải là 20% trong năm 2008?
JNK


20% + 500 cho> 500 mỗi cột kể từ SQL Server 2005+
gbn

7

Lần duy nhất tôi tắt thống kê tự động là khi tôi sử dụng một số lệnh không có giấy tờ để tạo một số thống kê giả mà tôi không muốn hệ thống xóa sạch khi dữ liệu đang được tải. Đây là một trường hợp RẤT cạnh.


5

Trong thời đại cũ (SQL Server 2000) có cài đặt thống kê tự động cập nhật có thể dẫn đến "tạm dừng" lớn trong các ứng dụng OLTP khi SQL quyết định thực hiện cập nhật thống kê.

Từ SQL Server 2005 trở đi, có một tùy chọn không đồng bộ sẽ không dẫn đến "tạm dừng" khi hết số liệu thống kê và sau đó được biên dịch lại. Các số liệu thống kê sẽ được biên dịch lại không đồng bộ cho lần tiếp theo chúng được yêu cầu.

Hãy nhớ rằng có một số dư cần có - đối với các tập dữ liệu lớn, bạn có thể muốn truy vấn hiện tại đưa số liệu thống kê cập nhật nhất vào tài khoản, vì truy vấn có thể mất nhiều thời gian hơn theo kế hoạch truy vấn không hiệu quả.

Bạn cũng có thể theo dõi số lần biên dịch lại mỗi giây và các số liệu hiệu suất quan trọng khác bằng cách sử dụng bộ đếm perfmon được SQL Server xuất bản, như họ nói, bằng chứng là trong pudding.


4

Làm thế nào hoạt động là các hệ thống?

Nếu chúng chủ yếu là các hệ thống đọc mà bạn có thể nhận được mà không cần cập nhật, nếu chúng tình cờ làm điều đó bằng tay khi chúng đang thay đổi dữ liệu (chèn, cập nhật, xóa).

Tuy nhiên, để thực hành tốt nhất, nên giữ nguyên nhân vì tôi nghĩ sẽ hiếm khi xảy ra sự cố. Tôi có thể sẽ gửi cho họ các bài viết và bài đăng trên blog cho thấy rằng nó được để lại trên. Kimberly Tripp có một số cái tốt.


4

Mặc dù tôi sẽ không bao giờ mâu thuẫn hay cố ý loại bỏ MrDenny dưới bất kỳ hình thức nào (quá tôn trọng kiến ​​thức và đóng góp của anh ấy cho cộng đồng) Tôi đã nhận thấy tài liệu MS khuyên bạn nên tắt thống kê cập nhật tự động.

Tại cấu hình và lập kế hoạch dung lượng lưu trữ và SQL Server (SharePoint Server 2010), MS khuyên bạn nên tắt nó đi.

Tôi cũng đã đọc khuyến nghị tương tự của MS cho các phiên bản SP trước đó nhưng không thể tìm thấy các liên kết ngay bây giờ.

Nhưng tôi KHÔNG phải là DBA chuyên gia SP nên bạn cũng có thể muốn kiểm tra xem Chun Liu, Kỹ sư lĩnh vực MS Permier, đã nói gì về nó tại Chun Liu trên SharePoint hoặc chỉ cần bỏ qua bài đăng này và để lại.


5
Lời khuyên của bạn là dành riêng cho cơ sở dữ liệu SharePoint, nó thường không áp dụng cho tất cả các cài đặt SQL Server.
Simon Righarts

0

Bạn thường chỉ tắt chúng nếu bạn có phương pháp tự cập nhật chúng. Tôi làm điều này mọi lúc vì chúng tôi cần lấy mẫu tốt hơn hoặc chỉ khác so với thống kê tự động sẽ làm. Điều đó khá phổ biến nhưng bạn sẽ không đơn giản tắt nó đi và không làm gì khác.

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.