Tần suất chúng ta nên sử dụng Cập nhật thống kê. (Thường xuyên hơn hay không)


7

Chúng tôi thường sử dụng giải pháp của Ola Hallengren, chuyên chăm sóc Cập nhật Thống kê trong Công việc tối ưu hóa Chỉ số mà chúng tôi có. Chúng tôi đã lên lịch cho mỗi nửa đêm Chủ nhật trong tất cả các máy chủ (1500+) như một thông lệ tiêu chuẩn.

Bây giờ, có một vài máy chủ có rất nhiều rắc rối về hiệu năng vào giữa tuần và chúng tôi chạy sp_updatestats cho cơ sở dữ liệu cụ thể đó khi sự cố được nêu ra cho các vấn đề về hiệu suất. Chúng tôi có một môi trường rộng lớn với tất cả các phiên bản được sử dụng, từ 2000 đến 2016. Đó là phiên bản 2012 & 2014, nơi chúng tôi đã chạy các số liệu thống kê cập nhật thủ công cho cơ sở dữ liệu cụ thể vào giữa tuần.

Gần đây, chúng tôi cũng phải lên lịch sp_updatestats mỗi ngày cho một số cơ sở dữ liệu rất tích cực do những rắc rối tái diễn.

Những câu hỏi của tôi :

  1. Bao lâu thì chúng ta nên có lịch trình?
  2. Những nhược điểm để lên lịch cho nó quá thường xuyên là gì?
  3. Có cách nào để tránh những nhược điểm với các bản cập nhật thường xuyên chạy thường xuyên như tôi nghe nói phải mất nhiều thời gian hơn để biên dịch và đôi khi có thể làm giảm hiệu suất?

Xin hãy giúp tôi với kinh nghiệm bạn có với điều này.

Câu trả lời:


5

Bao lâu thì chúng ta nên có lịch trình?

Bạn sẽ cần phải quyết định điều này cho chính mình.

  • Nó sẽ phụ thuộc vào sửa đổi (chèn xóa cập nhật) của các cột có liên quan đến số liệu thống kê được đề cập. Bạn có thể sử dụng TSQL tập lệnh của tôi để Tìm Trạng thái Thống kê Máy chủ SQL để tìm số lượng hàng được sửa đổi kể từ lần thống kê được cập nhật lần cuối.
  • Là thống kê cập nhật tự động của bạn được bật?
  • Kích thước của bảng của bạn do ngưỡng khi thống kê cập nhật tự động được kích hoạt. Hiểu khi thống kê sẽ tự động cập nhật bởi Erin Stellato giải thích chi tiết.
  • Nếu bạn thấy rằng số liệu thống kê cập nhật tự động của bạn không đủ tốt, bạn nên xem xét thống kê cập nhật thủ công.
  • Nếu bạn có các bảng lớn cho phiên bản trước 2014, hãy xem xét Trace Flag 2371. Hãy chú ý rằng đó là mặc định trong SQL 2016. Erik Darling nói về nó trong Thay đổi để tự động cập nhật ngưỡng thống kê trong SQL Server 2016 .

Những nhược điểm để lên lịch cho nó quá thường xuyên là gì?

Kendra Little giải thích trong UPDATE STATISTICS: Vụ nổ IO bí mật với một số mẹo làm thế nào để làm điều tương tự hiệu quả hơn.

Có cách nào để tránh những nhược điểm với các bản cập nhật thường xuyên chạy song song không?

Nếu bạn có nghĩa là chạy thống kê cập nhật song song, tôi đề nghị 2 điều cần chú ý.

  1. Không chạy song song các bảng thống kê từ cùng một bảng, nó sẽ gây ra chặn. Đã có sự cải thiện về vấn đề này kể từ SQL 2014. Đọc thêm chi tiết trong Hỗ trợ cải thiện thống kê song song của Jonathan Kehayias và hiệu suất Thống kê cập nhật với SQL 2014 & SQL 2016 của Parikshit Savigate của Nhóm Microsoft Tiger.
  2. Giai đoạn quét thống kê cập nhật diễn ra song song và đã được cải thiện trong SQL 2016. Hãy cẩn thận với số phiên chạy song song, bạn có thể khiến các phiên khác chờ đợi lịch trình có sẵn. Xem Cập nhật thống kê song song Q & A liên quan .

Dựa trên việc chỉnh sửa câu hỏi số 3 của bạn, tôi khuyên bạn nên đọc Tự động cập nhật số liệu thống kê được bật .

Tài nguyên bổ sung:


1

Chỉ mục reorgs (ALTER INDEX REORG) không cập nhật số liệu thống kê theo cách xây dựng lại chỉ mục và việc xây dựng lại chỉ mục riêng lẻ (ALTER INDEX my Index REBUILD) chỉ cập nhật số liệu thống kê cho chỉ mục đó.

Nếu bạn đang thực hiện reorgs (dựa trên tỷ lệ phần trăm phân mảnh, v.v.), bạn sẽ muốn kết hợp điều đó với quy trình thống kê cập nhật, ít nhất là cho các chỉ mục đó với các số liệu thống kê không được cập nhật trong reorg (kiểm tra sys. dm_db_stats_properies):

declare @tablename sysname = 'myTable';
select t.object_id, t.name, s.stats_id, p.last_updated
from sys.tables t
join sys.stats s
  on t.object_id = s.object_id
cross apply sys.dm_db_stats_properties(s.object_id, s.stats_id) p
where t.name = @tablename;

Cảm ơn John, nhưng tôi đang sử dụng giải pháp Ola Hellengren và nó thực hiện các thống kê Cập nhật chính xác theo cách nó cần phải có. Nó cập nhật số liệu thống kê trên tất cả các cơ sở dữ liệu hoặc cơ sở dữ liệu được chọn dựa trên cách bạn sửa đổi nó. ola.hallengren.com/ từ
Ramakant Dadhichi
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.