Postgresql: Giá trị default_statistic_target thực sự có nghĩa là gì?


11

Việc tăng giá trị default_statistic_target có thể làm cho cơ sở dữ liệu của bạn nhanh hơn, đặc biệt sau khi phân tích ....

Đọc bài viết này tôi thấy rằng https://discuss.pivotal.io/hc/en-us/articles/201581033-default-statistic-target-Explained

(...) Tóm lại và trong thuật ngữ cơ bản, tham số này kiểm soát cách thu thập số liệu thống kê, với giá trị 1 là thống kê ước tính / chính xác ít nhất và giá trị 1000 là thống kê chính xác nhất, rõ ràng là tốn thời gian / tài nguyên (CPU, bộ nhớ, v.v.) / không gian. Thông thường giá trị mặc định là đủ để có được một gói chính xác, nhưng nếu bạn có phân phối dữ liệu phức tạp / hoặc một cột được tham chiếu trong truy vấn khá thường xuyên, thì việc đặt giá trị cao hơn có thể giúp có được số liệu thống kê tốt hơn trên bảng và do đó kế hoạch tốt hơn cho trình tối ưu hóa để thực hiện.

Đó là một lời giải thích tốt, nhưng ví dụ nếu tôi đặt default_statistic_target = 1000 thì 1000 thực sự có nghĩa là gì? Đó là 1000 kilobyte số liệu thống kê được tạo ra? hoặc có thể là 1000 hàng của các bảng được phân tích? Có lẽ đó là 1000 cột? hoặc có lẽ 1000 giây cho mỗi phân tích ...

Vì vậy, câu hỏi của tôi là làm thế nào con số này thực sự ảnh hưởng đến phân tích hoặc kế hoạch truy vấn? Rõ ràng tôi hiểu rằng default_statistic_target = 1000 sẽ nhận được nhiều thời gian hơn 100, để chạy phân tích và 1000 sẽ tạo ra số liệu thống kê tốt hơn ...

Câu trả lời:


16

Nó sẽ lấy mẫu 300 * default_statistics_targetcác hàng từ mỗi bảng. Nó sẽ sử dụng mẫu đó để xác định tối đa default_statistics_targetcác giá trị phổ biến nhất để lưu trữ trong mảng đó và tối đa default_statistics_targetgiới hạn biểu đồ để lưu trữ trong mảng đó. Cộng với một vài thống kê vô hướng khác, như số lượng giá trị riêng biệt.

Số nhân 300 được chọn vì một số lý thuyết thống kê nói rằng đó là số lượng bạn cần lấy mẫu cho mỗi biểu đồ ràng buộc mà bạn muốn tính toán, để giới hạn biểu đồ được lấy mẫu của bạn có mức độ không chắc chắn chấp nhận được.

Danh sách giá trị phổ biến nhất được sử dụng để giúp người lập kế hoạch dự đoán tính chọn lọc của các biểu thức đẳng thức, như thế nào where state='CA'. Giới hạn biểu đồ được sử dụng để giúp người lập kế hoạch dự đoán tính chọn lọc của bất đẳng thức hoặc biểu thức phạm vi, nhưwhere income between 55000 and 64000


6
Đối với những người quan tâm, con số 300 ma thuật này được giải thích trong mã nguồn của postgres tại đây và tài liệu nghiên cứu được tham chiếu ở đây
maahl
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.