Cập nhật thống kê mẫu của SQL Server bỏ lỡ RANGE_HI_KEY cao nhất trên cột khóa tăng dần


10

Tôi đang cố gắng hiểu cách thức lấy mẫu Thống kê hoạt động và liệu hành vi dự kiến ​​dưới đây có được cập nhật hay không.

Chúng tôi có một bảng lớn được phân chia theo ngày với một vài tỷ hàng. Ngày phân vùng là ngày làm việc trước đó và do đó là một khóa tăng dần. Chúng tôi chỉ tải dữ liệu vào bảng này cho ngày trước.

Tải dữ liệu chạy qua đêm, vì vậy vào Thứ Sáu ngày 8 tháng 4, chúng tôi đã tải dữ liệu cho ngày 7.

Sau mỗi lần chạy, chúng tôi cập nhật số liệu thống kê, mặc dù lấy một mẫu, thay vì a FULLSCAN.

Có thể tôi đang ngây thơ, nhưng tôi đã mong đợi SQL Server xác định khóa cao nhất và khóa thấp nhất trong phạm vi để đảm bảo nó có một mẫu phạm vi chính xác. Theo bài viết này :

Đối với nhóm đầu tiên, ranh giới dưới là giá trị nhỏ nhất của cột mà biểu đồ được tạo.

Tuy nhiên, nó không đề cập đến xô cuối cùng / giá trị lớn nhất.

Với bản cập nhật Thống kê được lấy mẫu vào sáng ngày 8, mẫu đã bỏ lỡ giá trị cao nhất trong bảng (thứ 7).

nhập mô tả hình ảnh ở đây

Vì chúng tôi thực hiện rất nhiều truy vấn trên dữ liệu từ ngày trước, điều này dẫn đến việc ước tính số lượng thẻ không chính xác và một số truy vấn hết thời gian.

SQL Server có nên không xác định giá trị cao nhất cho khóa đó và sử dụng giá trị tối đa đó RANGE_HI_KEYkhông? Hay đây chỉ là một trong những giới hạn của cập nhật mà không sử dụng FULLSCAN?

Phiên bản SQL Server 2012 SP2-CU7. Hiện tại chúng tôi không thể nâng cấp do thay đổi OPENQUERYhành vi trong SP3 đang làm tròn số trong truy vấn máy chủ được liên kết giữa SQL Server và Oracle.

Câu trả lời:


11

SQL Server có nên không xác định giá trị cao nhất cho khóa đó và sử dụng giá trị tối đa đó RANGE_HI_KEYkhông? Hay đây chỉ là một trong những giới hạn của cập nhật mà không sử dụng FULLSCAN?

Đó là một hạn chế của việc thực hiện thống kê được lấy mẫu hiện nay. Vì thế, bộ sưu tập số liệu thống kê được sử dụng TABLESAMPLE SYSTEM, sử dụng quét theo thứ tự phân bổ và chọn các trang từ quét đến mẫu. Chỉ các trang được chọn đóng góp vào biểu đồ.

Vì quá trình quét được sắp xếp theo thứ tự (chứ không phải theo thứ tự chỉ mục), không có cách nào để ưu tiên cho các trang đầu tiên và cuối cùng theo thứ tự chính.

Để biết thêm thông tin xem câu hỏi liên quan này:

Làm thế nào để lấy mẫu làm việc khi cập nhật số liệu thống kê?

và bài viết của tôi, Quét thứ tự phân bổ

Để biết cách giải quyết, hãy xem Thống kê về các cột tăng dần của Fabiano Amorim


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.