Kích thước mẫu mặc định của thống kê trong SQL Server là gì?


11

Từ MSDN :

Khi không có tùy chọn mẫu (SAMPLE, FULLSCAN, RESAMPLE)nào được chỉ định, trình tối ưu hóa truy vấn sẽ lấy mẫu dữ liệu và tính kích thước mẫu theo mặc định.

Làm thế nào để xác định kích thước mẫu mặc định của thống kê?

Tôi đã đi qua MSDN nhưng không tìm thấy bất kỳ công thức hoặc phương pháp nào để xác định cỡ mẫu mặc định. Ở mọi nơi chỉ có công thức hiện diện để kích hoạt cập nhật thống kê tự động. Bất kỳ con trỏ sẽ hữu ích.

Câu trả lời:


20

Làm thế nào để xác định kích thước mẫu mặc định của thống kê?

Tôi xin trích dẫn từ bài viết của Blogs.msdn

Thuật toán tự động cập nhật thuật toán:

Vì vậy, số liệu thống kê Cập nhật tự động sẽ kích hoạt cho mỗi thay đổi 500 + 20% trong các hàng của bảng. Tất nhiên, chúng tôi có một thuật toán cải tiến trong SQL 2012, đó là SQRT (1000 * Bảng hàng) tốt hơn nhiều.

Khi nó kích hoạt, nó sẽ sử dụng tốc độ lấy mẫu mặc định và đây là thuật toán tính toán tốc độ lấy mẫu.

1) Nếu bảng <8 MB thì nó cập nhật số liệu thống kê với toàn màn hình.

2) Nếu bảng> 8MB, nó tuân theo thuật toán. Nó làm giảm tốc độ lấy mẫu khi số lượng hàng trong bảng được tăng lên để đảm bảo chúng tôi không quét quá nhiều dữ liệu. Đây không phải là một giá trị cố định nhưng nằm dưới sự kiểm soát của trình tối ưu hóa. Nó cũng không phải là một thuật toán tuyến tính.

Ví dụ: nếu chúng tôi có 1.000.000 hàng, nó sẽ sử dụng tỷ lệ lấy mẫu là 30% nhưng khi số lượng hàng tăng lên 8.000.000 thì sẽ giảm tỷ lệ lấy mẫu xuống 10%. Các tỷ lệ lấy mẫu này không nằm dưới sự kiểm soát của DBA nhưng trình tối ưu hóa quyết định nó.

Để hiểu thêm tôi đề nghị bạn đọ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.