Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

18.6. Lập cách đọc kèo bóng đá

18.6.1. Phương pháp kế cách đọc kèo bóng đá Cấu hình

Các tham số cấu hình này cung cấp một phương thức thô của ảnh hưởng đến các cách đọc kèo bóng đá được lựa chọn bởi trình tối ưu hóa truy vấn. Nếu như Kế hoạch mặc định được chọn bởi trình tối ưu hóa cho một truy vấn cụ thể không tối ưu, Atạm thờiGiải pháp là sử dụng một của các tham số cấu hình này để buộc trình tối ưu hóa Chọn một kế cách đọc kèo bóng đá khác. Những cách tốt hơn để cải thiện chất lượng của Các kế cách đọc kèo bóng đá được lựa chọn bởi trình tối ưu hóa bao gồm điều chỉnh máy bay Hằng số chi phí (xemPhần 18.6.2), ChạyPhân tíchbằng tay, tăng giá trị củadefault_statistic_targettham số cấu hình và tăng số lượng Thống kê được thu thập cho các cột cụ thể bằng cách sử dụngThay đổi bảng thống kê.

enable_bitmapscan(Boolean)

cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đá của Các loại kế hoạch quét bitmap. Mặc định làtrên.

enable_hashagg(Boolean)

Cho phép hoặc vô hiệu hóa việc sử dụng băm của người lập cách đọc kèo bóng đá Các loại kế hoạch tổng hợp. Mặc định làtrên.

enable_hashjoin(Boolean)

Cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đá Các loại kế hoạch băm. Mặc định làtrên.

enable_indexscan(Boolean)

Cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đá của Các loại kế hoạch quét chỉ mục. Mặc định làtrên.

enable_m vật liệu(Boolean)

Cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đá của vật chất hóa. Không thể đàn áp vật chất hóa hoàn toàn, nhưng tắt biến này ngăn chặn người lập kế hoạch chèn các nút thành hiện thực ngoại trừ trong trường hợp nó được yêu cầu cho sự đúng đắn. Các Mặc định làtrên.

enable_mergejoin(Boolean)

Cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đá của Hợp nhất các loại kế hoạch tham gia. Mặc định làtrên.

enable_nestloop(Boolean)

cho phép hoặc vô hiệu hóa việc sử dụng của người lập cách đọc kèo bóng đá Kế hoạch tham gia-LOOP. Không thể đàn áp vòng lặp lồng nhau hoàn toàn, nhưng tắt biến này không khuyến khích người lập kế hoạch sử dụng một nếu có Phương pháp có sẵn. Mặc định làtrên.

14226_14242(Boolean)

cho phép hoặc vô hiệu hóa việc sử dụng của người lập cách đọc kèo bóng đá Các loại kế hoạch quét tuần tự. Không thể đàn áp Quét tuần tự hoàn toàn, nhưng tắt biến này không khuyến khích người lập kế hoạch sử dụng một nếu có Phương pháp có sẵn. Mặc định làtrên.

enable_sort(Boolean)

14852_15138trên.

enable_tidscan(Boolean)

cho phép hoặc vô hiệu hóa việc sử dụng trình lập cách đọc kèo bóng đáTIDCác loại kế cách đọc kèo bóng đá quét. Mặc định làtrên.

18.6.2. Chi phí kế cách đọc kèo bóng đá Hằng số

Thechi phí15824_16150SEQ_PAGE_COSTđược đặt thành thông thường1.0Và các biến chi phí khác là Đặt với tham chiếu đến điều đó. Nhưng bạn có thể sử dụng một quy mô khác Nếu bạn thích, chẳng hạn như thời gian thực hiện thực tế tính bằng mili giây trên một máy cụ thể.

Lưu ý:16527_16863

SEQ_PAGE_COST(Nổi điểm)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về chi phí của một trang đĩa Tìm nạp đó là một phần của một loạt các lần tìm kiếm tuần tự. Các Mặc định là 1.0. Giá trị này có thể được ghi đè cho một không gian bảng cụ thể bằng cách đặt tham số không gian bảng cùng tên (xemthay đổi không gian bảng).

ngẫu nhiên_page_cost17647_17651Nổi điểm)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về chi phí của A Trang đĩa không được tìm hiểu. Mặc định là 4.0. Giá trị này có thể được ghi đè cho một không gian bảng cụ thể Bằng cách đặt tham số không gian bảng cùng tên (xemPostgreSQL: Tài liệu: 9.0: thay).

Giảm giá trị này liên quan đếnSEQ_PAGE_COSTsẽ khiến hệ thống Thích quét chỉ mục; Nâng cao nó sẽ làm cho quét chỉ số tương đối đắt hơn. Bạn có thể nâng hoặc thấp hơn cả hai các giá trị cùng nhau thay đổi tầm quan trọng của đĩa I/O chi phí liên quan đến chi phí CPU, được mô tả bởi tham số sau.

Tip:18568_18622ngẫu nhiên_page_costđến ít hơn hơnSEQ_PAGE_COST, đó là Không hợp lý về thể chất để làm như vậy. Tuy nhiên, cài đặt chúng bằng nhau có ý nghĩa nếu cơ sở dữ liệu hoàn toàn được lưu trữ trong ram, vì trong trường hợp đó không có hình phạt để chạm vào các trang ra khỏi trình tự. Ngoài ra, trong a Cơ sở dữ liệu được lưu trữ nặng, bạn nên giảm cả hai giá trị so với các tham số CPU, vì chi phí Tìm nạp một trang đã có trong RAM nhỏ hơn nhiều so với nó thường sẽ được.

cpu_tuple_cost(Nổi điểm)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về chi phí xử lý mỗi hàng trong một truy vấn. Mặc định là 0,01.

cpu_index_tuple_cost(Điểm nổi)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về chi phí xử lý Mỗi mục nhập chỉ mục trong quá trình quét chỉ mục. Mặc định là 0,005.

CPU_OPERATOR_COST(Nổi điểm)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về chi phí xử lý mỗi toán tử hoặc chức năng được thực thi trong một truy vấn. Các Mặc định là 0,0025.

hiệu quả_cache_size(Số nguyên)

Đặt giả định của người lập kế cách đọc kèo bóng đá về kích thước hiệu quả của bộ đệm đĩa có sẵn cho một truy vấn duy nhất. Điều này được đưa vào ước tính chi phí sử dụng chỉ mục; Một giá trị cao hơn làm cho nó nhiều khả năng quét chỉ mục sẽ được sử dụng, giá trị thấp hơn làm cho nó có nhiều khả năng Quét tuần tự sẽ được sử dụng. Khi đặt cái này tham số bạn nên xem xét cả haiPostgreSQLbộ đệm được chia sẻ và một phần bộ nhớ cache đĩa của kernel sẽ được sử dụng choPostgreSQLTệp dữ liệu. Ngoài ra, hãy tính đến số lượng dự kiến ​​của đồng thời cách đọc kèo bóng đá trên các bảng khác nhau, vì chúng sẽ phải Chia sẻ không gian có sẵn. Tham số này không có hiệu lực Trên kích thước của bộ nhớ chia sẻ được phân bổ bởiPostgreSQL, cũng không bảo lưu bộ đệm đĩa kernel; Nó chỉ được sử dụng để ước tính mục đích. Mặc định là 128 megabyte (128MB).

18.6.3. cách đọc kèo bóng đá di truyền Trình tối ưu hóa

Trình tối ưu hóa truy vấn di truyền (GEQO) là một thuật toán cách đọc kèo bóng đá sử dụng tìm kiếm heuristic. Điều này làm giảm kế hoạch thời gian cho các truy vấn phức tạp (những người tham gia nhiều mối quan hệ), tại chi phí sản xuất các kế hoạch đôi khi kém hơn so với các kế hoạch Tìm thấy bởi thuật toán tìm kiếm đầy đủ thông thường. Để biết thêm Thông tin xemChương 50.

geqo(Boolean)

Cho phép hoặc vô hiệu hóa tối ưu hóa cách đọc kèo bóng đá di truyền. Cái này được mặc định. Nó thường là tốt nhất là không tắt nó đi trong sản xuất; Thegeqo_thresholdBiến cung cấp nhiều hơn Kiểm soát hạt của Geqo.

geqo_threshold(Số nguyên)

Sử dụng tối ưu hóa truy vấn di truyền để lập cách đọc kèo bóng đá với AT ít nhất là nhiềutừMục có liên quan. (Lưu ý rằng ABên ngoài đầy đủ THAM GIAXây dựng chỉ có mộttừMục.) Mặc định là 12. Để đơn giản hơn Truy vấn thường tốt nhất là sử dụng thông thường, Người lập kế cách đọc kèo bóng đá tìm kiếm toàn diện, nhưng đối với các truy vấn có nhiều Bảng tìm kiếm toàn diện mất quá nhiều thời gian, thường dài hơn hơn hình phạt thực hiện một kế cách đọc kèo bóng đá dưới mức tối ưu. Như vậy, a ngưỡng trên kích thước của truy vấn là một cách thuận tiện để Quản lý việc sử dụng geqo.

geqo_effort(Số nguyên)

23847_24200

geqo_effortKhông thực sự làm bất cứ điều gì trực tiếp; nó chỉ được sử dụng để tính toán giá trị mặc định cho các biến khác có ảnh hưởng Hành vi Geqo (được mô tả dưới đây). Nếu bạn thích, bạn có thể Thay vào đó, đặt các tham số khác bằng tay.

geqo_pool_size(Số nguyên)

Điều khiển kích thước nhóm được sử dụng bởi GEQO, đó là Số lượng cá nhân trong quần thể di cách đọc kèo bóng đáền. Nó phải ít nhất là hai và các giá trị hữu ích thường là 100 đến 1000. Nếu nó được đặt thành 0 (cài đặt mặc định) thì một Giá trị phù hợp được chọn dựa trêngeqo_effortvà số lượng bảng trong cách đọc kèo bóng đá.

geqo_generations(Số nguyên)

Điều khiển số lượng thế hệ được GEQO sử dụng, đó là số lần lặp của thuật toán. Nó phải được ít nhất một và các giá trị hữu ích nằm trong cùng phạm vi với kích thước hồ bơi. Nếu nó được đặt thành 0 (cài đặt mặc định) sau đó một giá trị phù hợp được chọn dựa trêngeqo_pool_size.

geqo_selection_bias(Điểm nổi)

Kiểm soát độ lệch lựa chọn được sử dụng bởi GEQO. Các Xu hướng lựa chọn là áp lực chọn lọc trong dân số. Giá trị có thể từ 1,50 đến 2,00; cái sau là mặc định.

geqo_seed(Điểm nổi)

Điều khiển giá trị ban đầu của số ngẫu nhiên Trình tạo được sử dụng bởi GEQO để chọn các đường dẫn ngẫu nhiên thông qua Tham gia không gian tìm kiếm đơn hàng. Giá trị có thể dao động từ 0 (mặc định) cho một. Thay đổi giá trị thay đổi tập hợp các đường dẫn tham gia được khám phá, và có thể dẫn đến một hoặc con đường tốt nhất được tìm thấy.

18.6.4. Người lập kế cách đọc kèo bóng đá khác Tùy chọn

default_statistic_target(Số nguyên)

Đặt mục tiêu thống kê mặc định cho các cột bảng không có mục tiêu cụ thể của cột được đặt thông quaThay đổi bảng thống kê. Giá trị lớn hơn tăng thời gian cần thiết để làmPhân tích, nhưng có thể cải thiện chất lượng của ước tính của người lập kế cách đọc kèo bóng đá. Mặc định là 100. để biết thêm thông tin về việc sử dụng số liệu thống kê củaPostgreSQLTruy vấn kế cách đọc kèo bóng đá, tham khảoPhần 14.2.

instraint_exclusion(enum)

Kiểm soát việc sử dụng các ràng buộc bảng của người lập cách đọc kèo bóng đá Để tối ưu hóa các truy vấn. Các giá trị được phép củaurdaint_exclusiontrên(kiểm tra các ràng buộc cho tất cả các bảng),TẮT(không bao giờ kiểm tra các ràng buộc), Vàphân vùng(Kiểm tra Các ràng buộc chỉ cho các bảng con kế thừa vàLiên minh tất cảSqueries).phân vùnglà mặc định cài đặt. Nó thường được sử dụng với thừa kế và Các bảng được phân vùng để cải thiện hiệu suất.

Khi tham số này cho phép nó cho một bảng cụ thể, Người lập kế cách đọc kèo bóng đá so sánh các điều kiện truy vấn với bảngKiểm traràng buộc và bỏ qua các bảng quét mà các điều kiện mâu thuẫn với hạn chế. Ví dụ:

Tạo cha mẹ (số nguyên khóa, ...);
Tạo Bảng trẻ em1000 (Kiểm tra (khóa giữa 1000 đến 1999)) kế thừa (cha mẹ);
Tạo bảng con2000 (kiểm tra (khóa giữa 2000 đến 2999)) kế thừa (cha mẹ);
...
Chọn * từ cha mẹ trong đó phím = 2400;

Với loại trừ bị ràng buộc, điều nàyChọnsẽ không quétChild1000Tất cả, cải thiện hiệu suất.

29442_29863

Tham khảoPhần 5.9.4Để biết thêm thông tin về việc sử dụng Bị ràng buộc loại trừ và phân vùng.

con trỏ_tuple_fraction(Điểm nổi)

Đặt ước tính của người lập kế cách đọc kèo bóng đá về tỷ lệ của A Các hàng của con trỏ sẽ được truy xuất. Mặc định là 0,1. Các giá trị nhỏ hơn của cài đặt này thiên vị người lập kế cách đọc kèo bóng đá hướng tới sử dụng"Bắt đầu nhanh"Kế cách đọc kèo bóng đá cho con trỏ, sẽ nhanh chóng lấy lại một vài hàng đầu tiên Trong khi có lẽ mất một thời gian dài để lấy tất cả các hàng. Các giá trị lớn hơn nhấn mạnh hơn vào tổng số ước tính thời gian. Ở cài đặt tối đa 1.0, con trỏ được lên kế cách đọc kèo bóng đá Chính xác như các truy vấn thông thường, chỉ xem xét tổng số thời gian ước tính và không bao lâu các hàng đầu tiên có thể đã giao hàng.

from_collapse_limit(Số nguyên)

31222_31305từ31332_31532Phần 14.3.

Đặt giá trị này thànhgeqo_thresholdhoặc nhiều hơn có thể kích hoạt việc sử dụng kế cách đọc kèo bóng đá GEQO, dẫn đến kế cách đọc kèo bóng đá không tối ưu. Nhìn thấyPhần 18.6.3.

tham gia_collapse_limit(Số nguyên)

Người lập kế cách đọc kèo bóng đá sẽ viết lại rõ ràngtham giaCấu trúc (ngoại trừTham gia đầy đủS) vào danh sáchtừCác mục bất cứ khi nào một danh sách không nhiều hơn Điều này nhiều mặt hàng sẽ dẫn đến. Giá trị nhỏ hơn giảm thời gian lập kế hoạch nhưng có thể mang lại các cách đọc kèo bóng đá kém hơn.

Theo mặc định, biến này được đặt giống nhưfrom_collapse_limit, đó là thích hợp cho hầu hết các mục đích sử dụng. Đặt nó thành 1 ngăn chặn bất kỳ sắp xếp lại rõ ràngtham gia32767_33173Phần 14.3.

Đặt giá trị này thànhgeqo_thresholdhoặc nhiều hơn có thể kích hoạt việc sử dụng kế cách đọc kèo bóng đá GEQO, dẫn đến kế cách đọc kèo bóng đá không tối ưu. Nhìn thấyPhần 18.6.3.