Phiên bản được hỗ trợ:3517_3526(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
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 tỷ lệ kèo bóng đá tối nay trang chohiện tạiPhiên bản hoặc một trong tỷ lệ kèo bóng đá tối nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

14.1. Sử tỷ lệ kèo bóng đá tối nayGiải tỷ lệ kèo bóng đá tối nay

PostgreSQLnghĩ ra Atỷ lệ kèo bóng đá tối nay truy vấnĐối với mỗi truy vấn mà nó nhận được. Chọn đúng tỷ lệ kèo bóng đá tối nay để phù hợp với cấu trúc truy vấn và các thuộc tính của dữ liệu là hoàn toàn quan trọng cho hiệu suất tốt, vì vậy hệ thống bao gồm một phức tạptỷ lệ kèo bóng đá tối nayĐiều đó cố gắng chọn các kế hoạch tốt. Bạn có thể sử tỷ lệ kèo bóng đá tối nayPostgreSQL: Tài liệu: 9Lệnh để xem tỷ lệ kèo bóng đá tối nay truy vấn nào mà người lập tỷ lệ kèo bóng đá tối nay tạo cho bất kỳ truy vấn nào. Đọc tỷ lệ kèo bóng đá tối nay là một nghệ thuật đòi hỏi một số kinh nghiệm để làm chủ, nhưng phần này cố gắng bao gồm những điều cơ bản.

10117_10202Phân tích chân không, sử tỷ lệ kèo bóng đá tối nay 9.3 Nguồn phát triển. Bạn sẽ có thể nhận được kết quả tương tự nếu bạn tự mình thử các ví dụ, nhưng chi phí ước tính và số lượng hàng của bạn có thể thay đổi một chút vìPhân tíchS thống kê là tỷ lệ kèo bóng đá tối nay mẫu ngẫu nhiên chứ không phải chính xác và vì chi phí vốn có phần phụ thuộc vào nền tảng.

Các ví dụ sử tỷ lệ kèo bóng đá tối nayGiải tỷ lệ kèo bóng đá tối nay'mặc định"Text"Định dạng đầu ra, nhỏ gọn và thuận tiện cho con người đọc. Nếu bạn muốn cho ănGiải tỷ lệ kèo bóng đá tối nayđầu ra của chương trình để phân tích thêm, bạn nên sử tỷ lệ kèo bóng đá tối nay một trong các định dạng đầu ra có thể đọc được bằng máy của nó (XML, JSON hoặc YAML) thay thế.

14.1.1.Giải tỷ lệ kèo bóng đá tối naycơ bản

Cấu trúc của tỷ lệ kèo bóng đá tối nay truy vấn là câytỷ lệ kèo bóng đá tối nay các nút11152_11422Giá trị​​tỷ lệ kèo bóng đá tối nay điều khoản và tỷ lệ kèo bóng đá tối nay chức năng trả lại trongtừ, có các loại nút quét riêng của chúng. Nếu truy vấn yêu cầu tham gia, tổng hợp, sắp xếp hoặc các hoạt động khác trên các tỷ lệ kèo bóng đá tối nay thô, thì sẽ có các nút bổ sung phía trên các nút quét để thực hiện các hoạt động này. Một lần nữa, thường có nhiều hơn một cách có thể để thực hiện các hoạt động này, vì vậy các loại nút khác nhau cũng có thể xuất hiện ở đây. Đầu ra củaGiải tỷ lệ kèo bóng đá tối nayCó một dòng cho mỗi nút trong cây tỷ lệ kèo bóng đá tối nay, hiển thị loại nút cơ bản cộng với ước tính chi phí mà người lập tỷ lệ kèo bóng đá tối nay thực hiện để thực hiện nút tỷ lệ kèo bóng đá tối nay đó. Các dòng bổ sung có thể xuất hiện, được thụt vào từ dòng tóm tắt của nút, để hiển thị các thuộc tính bổ sung của nút. Dòng đầu tiên (dòng tóm tắt cho nút trên cùng) có tổng chi phí thực hiện ước tính cho tỷ lệ kèo bóng đá tối nay; đó là số mà người lập tỷ lệ kèo bóng đá tối nay tìm cách giảm thiểu.

Đây là tỷ lệ kèo bóng đá tối nay ví dụ tầm thường, chỉ để hiển thị đầu ra trông như thế nào:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ Tenk1;

                         Kế hoạch truy vấn
---------------------------------------------------------------------
 SEQ SCAN trên TENK1 (chi phí = 0,00..458.00 hàng = 10000 chiều rộng = 244)

Vì truy vấn này không cóWHEREmệnh đề, nó phải quét tất cả các hàng của bảng, vì vậy người lập kế hoạch đã chọn sử tỷ lệ kèo bóng đá tối nay gói quét tuần tự đơn giản. Các số được trích dẫn trong ngoặc đơn (từ trái sang phải):

  • Chi phí khởi nghiệp ước tính. Đây là thời gian được sử tỷ lệ kèo bóng đá tối nay trước khi pha đầu ra có thể bắt đầu, ví dụ: thời gian để thực hiện sắp xếp trong một nút sắp xếp.

  • 13033_13260Giới hạnVí dụ bên dưới).

  • Số lượng tỷ lệ kèo bóng đá tối nay ước tính đầu ra theo nút kế hoạch này. Một lần nữa, nút được giả định là chạy để hoàn thành.

  • Độ rộng trung bình ước tính của đầu ra tỷ lệ kèo bóng đá tối nay theo nút kế hoạch này (tính bằng byte).

Chi phí được đo bằng các đơn vị tùy ý được xác định bởi các tham số chi phí của tỷ lệ kèo bóng đá tối nay (xemPhần 19.7.2). Thực tiễn truyền thống là để đo lường chi phí trong tỷ lệ kèo bóng đá tối nay đơn vị của trang đĩa Fetches; đó là,SEQ_PAGE_COSTđược đặt thành thông thường1.0và tỷ lệ kèo bóng đá tối nay tham số chi phí khác được đặt liên quan đến điều đó. tỷ lệ kèo bóng đá tối nay ví dụ trong phần này được chạy với tỷ lệ kèo bóng đá tối nay tham số chi phí mặc định.

14056_14557

Thetỷ lệ kèo bóng đá tối nayGiá trị là một chút khó khăn vì nó không phải là số lượng tỷ lệ kèo bóng đá tối nay được xử lý hoặc quét bởi nút kế hoạch, mà là số phát ra từ nút. Điều này thường ít hơn số được quét, do kết quả của việc lọc bởi bất kỳWHERE-Phout điều kiện đang được áp tỷ lệ kèo bóng đá tối nay tại nút. Lý tưởng nhất là ước tính các hàng cấp cao nhất sẽ xấp xỉ số lượng hàng thực sự được trả về, cập nhật hoặc bị xóa bởi truy vấn.

Trở về ví dụ của chúng tôi:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ Tenk1;

                         Kế hoạch truy vấn
---------------------------------------------------------------------
 SEQ SCAN trên TENK1 (chi phí = 0,00..458.00 hàng = 10000 chiều rộng = 244)

Những con số này có nguồn gốc rất đơn giản. Nếu bạn làm:

15375_15442

Bạn sẽ tìm thấy điều đóTENK1có 358 trang đĩa và 10000 tỷ lệ kèo bóng đá tối nay. Chi phí ước tính được tính là (các trang đĩa đọc *SEQ_PAGE_COST) + (tỷ lệ kèo bóng đá tối nay được quét *cpu_tuple_cost). Theo mặc định,SEQ_PAGE_COSTlà 1.0 vàCPU_Tuple_Costlà 0,01, vì vậy chi phí ước tính là (358 * 1.0) + (10000 * 0,01) = 458.

Bây giờ hãy sửa đổi truy vấn để thêmWHEREđiều kiện:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ Tenk1 trong đó độc đáo1 <7000;

                         Kế hoạch truy vấn
--------------------------------------------------------------------
 SEQ SCAN trên TENK1 (chi phí = 0,00..483.00 hàng = 7001 chiều rộng = 244)
   Bộ lọc: (độc đáo1 <7000)

Lưu ý rằngGiải tỷ lệ kèo bóng đá tối nayĐầu ra hiển thịWHEREmệnh đề được áp tỷ lệ kèo bóng đá tối nay dưới dạng"Bộ lọc"Điều kiện được gắn vào nút Kế hoạch quét SEQ. Điều này có nghĩa là nút kế hoạch kiểm tra điều kiện cho mỗi tỷ lệ kèo bóng đá tối nay mà nó quét và chỉ xuất ra các nút vượt qua điều kiện. Ước tính các tỷ lệ kèo bóng đá tối nay đầu ra đã được giảm doWHEREmệnh đề. Tuy nhiên, quét vẫn sẽ phải truy cập tất cả 10000 tỷ lệ kèo bóng đá tối nay, vì vậy chi phí chưa giảm; Trên thực tế, nó đã tăng lên một chút (bằng 10000 *CPU_OPERATOR_COSTWHEREđiều kiện.

Số lượng tỷ lệ kèo bóng đá tối nay thực tế mà truy vấn này sẽ chọn là 7000, nhưngtỷ lệ kèo bóng đá tối nay17140_17302Phân tíchlệnh, vì tỷ lệ kèo bóng đá tối nay số liệu thống kê được tạo bởiPhân tíchđược lấy từ tỷ lệ kèo bóng đá tối nay mẫu ngẫu nhiên của bảng.

Bây giờ, hãy làm cho điều kiện hạn chế hơn:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ TENK1 trong đó độc đáo1 <100;

                                  Kế hoạch truy vấn
------------------------------------------------------------------------------------------
 Quét heap bitmap trên TENK1 (chi phí = 5.07..229,20 hàng = 101 chiều rộng = 244)
   RECHECK cond: (độc đáo1 <100)
   - Quét chỉ mục bitmap trên TENK1_UNIQUE1 (chi phí = 0,00..5.04 hàng = 101 chiều rộng = 0)
         Index Cond: (độc đáo1 <100)

17948_18569"Bitmap"Được đề cập trong tên nút là cơ chế sắp xếp.)

Bây giờ hãy thêm tỷ lệ kèo bóng đá tối nay điều kiện khác vàoWHEREmệnh đề:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ TENK1 trong đó độc đáo1 <100 và StringU1 = 'xxx';

                                  Kế hoạch truy vấn
------------------------------------------------------------------------------------------
 Bitmap Heap Scan trên TENK1 (chi phí = 5.04..229,43 hàng = 1 chiều rộng = 244)
   RECHECK cond: (độc đáo1 <100)
   Bộ lọc: (StringU1 = 'xxx' :: name)
   - Quét chỉ mục bitmap trên TENK1_UNIQUE1 (chi phí = 0,00..5.04 hàng = 101 chiều rộng = 0)
         Index Cond: (độc đáo1 <100)

Điều kiện được thêm vàoStringU1 = 'xxx'Giảm ước tính số lượng tỷ lệ kèo bóng đá tối nay đầu ra, nhưng không phải là chi phí vì chúng tôi vẫn phải truy cập cùng một bộ tỷ lệ kèo bóng đá tối nay. Lưu ý rằng19453_1946319466_19549độc đáo1Cột. Thay vào đó, nó được áp tỷ lệ kèo bóng đá tối nay như một bộ lọc trên các hàng được lấy bởi chỉ mục. Do đó, chi phí thực sự đã tăng lên một chút để phản ánh việc kiểm tra thêm này.

Trong một số trường hợp, người lập kế hoạch sẽ tỷ lệ kèo bóng đá tối nay"đơn giản"tỷ lệ kèo bóng đá tối nay quét chỉ mục:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ Tenk1 trong đó độc đáo1 = 42;

                                 Kế hoạch truy vấn
-------------------------------------------------------------------------------------
 Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 (chi phí = 0,29..8.30 hàng = 1 chiều rộng = 244)
   Chỉ mục cond: (độc đáo1 = 42)

Trong loại kế hoạch này, các hàng bảng được tìm nạp theo thứ tự chỉ mục, điều này khiến chúng còn đắt hơn để đọc, nhưng có rất ít chi phí để sắp xếp các vị trí hàng không đáng giá. Bạn thường thấy loại kế hoạch này cho các truy vấn chỉ lấy một hàng. Nó cũng thường được sử tỷ lệ kèo bóng đá tối nay cho các truy vấn cóĐặt tỷ lệ kèo bóng đá tối nay bởiĐiều kiện phù hợp với thứ tự chỉ mục, vì sau đó không cần bước sắp xếp bổ sung để đáp ứngĐặt tỷ lệ kèo bóng đá tối nay bởi.

Nếu có tỷ lệ kèo bóng đá tối nay chỉ mục riêng biệt trên một số cột được tham chiếu trongWHERE, Người lập kế hoạch có thể chọn sử tỷ lệ kèo bóng đá tối nay và hoặc hoặc kết hợp các chỉ mục:

20842_21505

21513_21736

Đây là một ví dụ hiển thị tỷ lệ kèo bóng đá tối nay hiệu ứng củagiới hạn:

Giải tỷ lệ kèo bóng đá tối nay Chọn * từ TENK1 trong đó độc đáo1 <100 và độc đáo2 9000 giới hạn 2;

                                     Kế hoạch truy vấn
---------------------------------------------------------------------------------------------
 Giới hạn (chi phí = 0,29..14,48 hàng = 2 chiều rộng = 244)
   - Quét chỉ mục bằng TENK1_UNIQUE2 trên TENK1 (chi phí = 0,29..71,27 hàng = 10 chiều rộng = 244)
         Index Cond: (độc đáo2 9000)
         Bộ lọc: (độc đáo1 <100)

Đây là cùng tỷ lệ kèo bóng đá tối nay truy vấn như trên, nhưng chúng tôi đã thêm Agiới hạnđể không phải tất cả các tỷ lệ kèo bóng đá tối nay cần được truy xuất và người lập kế hoạch đã thay đổi suy nghĩ về những việc cần làm. Lưu ý rằng tổng chi phí và số lượng tỷ lệ kèo bóng đá tối nay của nút quét chỉ mục được hiển thị như thể nó đã được chạy để hoàn thành. Tuy nhiên, nút giới hạn dự kiến ​​sẽ dừng sau khi chỉ lấy một phần năm trong số các tỷ lệ kèo bóng đá tối nay đó, vì vậy tổng chi phí của nó chỉ là một phần năm và đó là chi phí ước tính thực tế của truy vấn. Kế hoạch này được ưu tiên hơn khi thêm một nút giới hạn vào kế hoạch trước đó vì giới hạn không thể tránh trả chi phí khởi động của quét bitmap, vì vậy tổng chi phí sẽ là một cái gì đó trên 25 đơn vị với phương pháp đó.

Hãy thử tham gia hai bảng, sử tỷ lệ kèo bóng đá tối nay các cột chúng tôi đã thảo luận:

Giải tỷ lệ kèo bóng đá tối nay Chọn *
Từ Tenk1 T1, Tenk2 T2
Trong đó t1.Unique1 <10 và t1.Unique2 = t2.unique2;

                                      Kế hoạch truy vấn
--------------------------------------------------------------------------------------------------
 Vòng lặp lồng nhau (chi phí = 4,65..118,62 hàng = 10 chiều rộng = 488)
   - Quét heap bitmap trên tenk1 t1 (chi phí = 4,36..39,47 hàng = 10 chiều rộng = 244)
         RECHECK COND: (độc đáo1 <10)
         - Quét chỉ mục bitmap trên TENK1_UNIQUE1 (chi phí = 0,00..4.36 hàng = 10 chiều rộng = 0)
               Index Cond: (độc đáo1 <10)
   - Quét chỉ mục bằng TENK2_UNIQUE2 trên TENK2 T2 (chi phí = 0,29..7,91 hàng = 1 chiều rộng = 244)
         INDEX cond: (độc đáo2 = t1.unique2)

Trong tỷ lệ kèo bóng đá tối nay này, chúng tôi có nút nối vòng lồng nhau với hai lần quét bảng làm đầu vào hoặc trẻ em. Sự thụt của các dòng tóm tắt nút phản ánh cấu trúc cây tỷ lệ kèo bóng đá tối nay. Đầu tiên của tham gia, hoặc"Outer", con là một bản quét bitmap tương tự như những gì chúng ta đã thấy trước đây. Chi phí và số lượng tỷ lệ kèo bóng đá tối nay của nó giống như chúng ta nhận được từChọn ... trong đó độc đáo1 <10Bởi vì chúng tôi đang áp tỷ lệ kèo bóng đá tối nayWHEREmệnh đềđộc đáo1 <10Tại nút đó. Thet1.Unique2 = t2.unique2mệnh đề chưa liên quan, vì vậy nó không ảnh hưởng đến số lượng tỷ lệ kèo bóng đá tối nay của quét bên ngoài. Nút nối vòng lặp lồng nhau sẽ chạy thứ hai hoặc"bên trong"Đứa trẻ một lần cho mỗi tỷ lệ kèo bóng đá tối nay thu được từ đứa trẻ bên ngoài. Các giá trị cột từ tỷ lệ kèo bóng đá tối nay bên ngoài hiện tại có thể được cắm vào quét bên trong; Ở đây,t1.Unique2Giá trị từ tỷ lệ kèo bóng đá tối nay bên ngoài có sẵn, vì vậy chúng tôi nhận được một kế hoạch và chi phí tương tự như những gì chúng tôi đã thấy ở trên cho một đơn giảnChọn ... trong đó t2.unique2 =hằng sốtrường hợp. (Chi phí ước tính thực sự thấp hơn tỷ lệ kèo bóng đá tối nay chút so với những gì đã thấy ở trên, do kết quả của bộ nhớ đệm dự kiến ​​sẽ xảy ra trong quá trình quét chỉ số lặp đi lặp lại trênT2)

Trong ví dụ này, số lượng tỷ lệ kèo bóng đá tối nay đầu ra của tham gia giống như sản phẩm của hai lần quét của hai lần quét, nhưng điều đó không đúng trong mọi trường hợp vì có thể có thêmWHERECác điều khoản đề cập đến cả hai bảng và do đó chỉ có thể được áp tỷ lệ kèo bóng đá tối nay tại điểm nối, không phải để quét đầu vào. Đây là một ví dụ:

25594_26408

Điều kiệnt1.hundred <t2.hundredKhông thể kiểm tra trongtenk2_unique2INDEX, vì vậy nó được áp tỷ lệ kèo bóng đá tối nay tại nút nối. Điều này làm giảm số lượng hàng đầu ra ước tính của nút nối, nhưng không thay đổi quét đầu vào.

Lưu ý rằng ở đây người lập tỷ lệ kèo bóng đá tối nay đã chọn để"Vật chất hóa"Mối quan hệ bên trong của tham gia, bằng cách đặt một nút tỷ lệ kèo bóng đá tối nay vật chất hóa trên nó. Điều này có nghĩa làT2SCAN INDEX sẽ được thực hiện chỉ một lần, mặc dù nút nối vòng lặp lồng nhau cần đọc dữ liệu đó mười lần, một lần cho mỗi tỷ lệ kèo bóng đá tối nay từ quan hệ bên ngoài. Nút vật chất sẽ lưu dữ liệu trong bộ nhớ khi đọc và sau đó trả về dữ liệu từ bộ nhớ trên mỗi lần truyền tiếp theo.

Khi giao dịch với các kết nối bên ngoài, bạn có thể thấy các nút tỷ lệ kèo bóng đá tối nay tham gia với cả hai"Tham gia bộ lọc"và đồng bằng"Filter"Điều kiện đính kèm. Tham gia tỷ lệ kèo bóng đá tối nay điều kiện bộ lọc đến từ bên ngoài tham giatrênmệnh đề, do đó, một hàng không thành công điều kiện bộ lọc nối vẫn có thể được phát ra dưới dạng hàng null. Nhưng một điều kiện bộ lọc đơn giản được áp tỷ lệ kèo bóng đá tối nay sau các quy tắc tham gia bên ngoài và do đó có tác tỷ lệ kèo bóng đá tối nay loại bỏ các hàng vô điều kiện. Trong một tham gia bên trong, không có sự khác biệt về ngữ nghĩa giữa các loại bộ lọc này.

Nếu chúng ta thay đổi tính chọn lọc của truy vấn một chút, chúng ta có thể nhận được một tỷ lệ kèo bóng đá tối nay tham gia rất khác:

Giải tỷ lệ kèo bóng đá tối nay Chọn *
Từ Tenk1 T1, Tenk2 T2
Trong đó t1.Unique1 <100 và t1.Unique2 = t2.unique2;

                                        Kế hoạch truy vấn
------------------------------------------------------------------------------------------------------
 Băm tham gia (chi phí = 230.47..713,98 hàng = 101 chiều rộng = 488)
   Hash Cond: (T2.Unique2 = T1.Unique2)
   - SEQ SCAN trên TENK2 T2 (chi phí = 0,00..445,00 hàng = 10000 chiều rộng = 244)
   - băm (chi phí = 229,20..229,20 hàng = 101 chiều rộng = 244)
         - Quét heap bitmap trên tenk1 t1 (chi phí = 5.07..229,20 hàng = 101 chiều rộng = 244)
               RECHECK cond: (độc đáo1 <100)
               - Quét chỉ mục bitmap trên TENK1_UNIQUE1 (chi phí = 0,00..5.04 hàng = 101 chiều rộng = 0)
                     Index Cond: (độc đáo1 <100)

Ở đây, người lập kế hoạch đã chọn sử tỷ lệ kèo bóng đá tối nay tham gia băm, trong đó các hàng của một bảng được nhập vào bảng băm trong bộ nhớ, sau đó bảng khác được quét và bảng băm được thử nghiệm cho các trận đấu với mỗi hàng. Một lần nữa lưu ý cách thụt đầu tư phản ánh cấu trúc kế hoạch: quét bitmap trênTENK1là đầu vào của nút băm, cấu trúc bảng băm. Sau đó, được trả lại cho nút nối băm, đọc các tỷ lệ kèo bóng đá tối nay từ gói con bên ngoài của nó và tìm kiếm bảng băm cho mỗi cái.

tỷ lệ kèo bóng đá tối nay loại tham gia khác có thể là tỷ lệ kèo bóng đá tối nay sự hợp nhất tham gia, được minh họa ở đây:

Giải tỷ lệ kèo bóng đá tối nay Chọn *
Từ Tenk1 T1, Onek T2
Trong đó t1.Unique1 <100 và t1.Unique2 = t2.unique2;

                                        Kế hoạch truy vấn
------------------------------------------------------------------------------------------------------
 Hợp nhất tham gia (chi phí = 198.11..268.19 hàng = 10 chiều rộng = 488)
   Hợp nhất cond: (t1.unique2 = t2.unique2)
   - Quét chỉ mục bằng TENK1_UNIQUE2 trên TENK1 T1 (chi phí = 0,29..656.28 hàng = 101 chiều rộng = 244)
         Bộ lọc: (độc đáo1 <100)
   - Sắp xếp (chi phí = 197.83..200.33 hàng = 1000 chiều rộng = 244)
         Key Key: T2.Unique2
         - SEQ SCAN trên Onek T2 (chi phí = 0,00..148.00 hàng = 1000 chiều rộng = 244)

Merge tham gia yêu cầu dữ liệu đầu vào của nó được sắp xếp trên các phím tham gia. Trong tỷ lệ kèo bóng đá tối nay nàyTENK1Dữ liệu được sắp xếp bằng cách sử dụng quét chỉ mục để truy cập các hàng theo đúng thứ tự, nhưng quét và sắp xếp tuần tự được ưa tỷ lệ kèo bóng đá tối nay choOnek, bởi vì có nhiều tỷ lệ kèo bóng đá tối nay khác được truy cập trong bảng đó. .

Một cách để xem xét các kế hoạch biến thể là buộc người lập kế hoạch phải coi thường bất kỳ chiến lược nào mà nó nghĩ là rẻ nhất, sử tỷ lệ kèo bóng đá tối nay các cờ Bật/Vô hiệu hóa được mô tả trongPhần 19.7.1. (Đây là tỷ lệ kèo bóng đá tối nay công cụ thô, nhưng hữu ích. Xem thêmPhần 14.3.) Ví dụ, nếu chúng ta không tin rằng quét liên tiếp là cách tốt nhất để đối phó với bảngOnekTrong ví dụ trước, chúng ta có thể thử

30862_31438

trong đó cho thấy người lập tỷ lệ kèo bóng đá tối nay nghĩ rằng sắp xếpOnekbằng cách quét chỉ số đắt hơn khoảng 12% so với quét liên tiếp. Tất nhiên, câu hỏi tiếp theo là liệu nó có đúng về điều đó không. Chúng ta có thể điều tra rằng bằng cách sử tỷ lệ kèo bóng đá tối nayGiải tỷ lệ kèo bóng đá tối nay Phân tích, như được thảo luận dưới đây.

14.1.2.Giải tỷ lệ kèo bóng đá tối nay Phân tích

Có thể kiểm tra độ chính xác của ước tính của người lập kế hoạch bằng cách sử tỷ lệ kèo bóng đá tối nayGiải tỷ lệ kèo bóng đá tối nay'sPhân tíchTùy chọn. Với tùy chọn này,Giải tỷ lệ kèo bóng đá tối nay32125_32291Giải tỷ lệ kèo bóng đá tối nayHiển thị. Ví dụ: chúng ta có thể nhận được kết quả như thế này:

32399_33361

Lưu ý rằng"Thời gian thực tế"33423_33479chi phíƯớc tính được thể hiện bằng các đơn vị tùy ý; Vì vậy, họ không có khả năng phù hợp. Điều thường quan trọng nhất để tìm kiếm là liệu số lượng tỷ lệ kèo bóng đá tối nay ước tính có hợp lý gần với thực tế hay không. Trong ví dụ này, các ước tính đều chết, nhưng điều đó khá bất thường trong thực tế.

Trong một số gói truy vấn, có thể thực hiện một nút con được thực thi nhiều lần. Ví dụ: quét chỉ mục bên trong sẽ được thực hiện một lần trên mỗi tỷ lệ kèo bóng đá tối nay bên ngoài trong kế hoạch vòng lặp lồng trên. Trong những trường hợp như vậy,vòng lặpGiá trị báo cáo tổng số thực thi của nút và giá trị thời gian và tỷ lệ kèo bóng đá tối nay thực được hiển thị là trung bình trên mỗi lần thực hiện. Điều này được thực hiện để làm cho các con số tương đương với cách mà ước tính chi phí được hiển thị. Nhân vớivòng lặpGiá trị để có được tổng thời gian thực sự được sử tỷ lệ kèo bóng đá tối nay trong nút. Trong ví dụ trên, chúng tôi đã chi tổng cộng 0,220 mili giây để thực hiện các lần quét chỉ mục trênTENK2.

Trong tỷ lệ kèo bóng đá tối nay số trường hợpGiải tỷ lệ kèo bóng đá tối nay Phân tíchHiển thị số liệu thống kê thực thi bổ sung ngoài thời gian thực hiện nút kế hoạch và số lượng tỷ lệ kèo bóng đá tối nay. Ví dụ: các nút sắp xếp và băm cung cấp thêm thông tin:

34718_36107

​​Nút sắp xếp hiển thị phương thức sắp xếp được sử tỷ lệ kèo bóng đá tối nay (đặc biệt, cho dù sắp xếp là trong bộ nhớ hay trên đĩa) và lượng bộ nhớ hoặc không gian đĩa cần thiết. Nút băm hiển thị số lượng thùng băm và lô cũng như lượng bộ nhớ cực đại được sử tỷ lệ kèo bóng đá tối nay cho bảng băm. (Nếu số lượng lô vượt quá một, cũng sẽ có cách sử tỷ lệ kèo bóng đá tối nay không gian đĩa liên quan, nhưng điều đó không được hiển thị.)

Một loại thông tin bổ sung khác là số lượng tỷ lệ kèo bóng đá tối nay bị xóa bởi điều kiện bộ lọc:

Giải tỷ lệ kèo bóng đá tối nay Phân tích Chọn * từ Tenk1 trong đó mười <7;

                                               Kế hoạch truy vấn
---------------------------------------------------------------------------------------------------------------------
 SEQ SCAN trên TENK1 (chi phí = 0,00..483.00 hàng = 7000 chiều rộng = 244) (thời gian thực tế = 0,016..5.107 hàng = 7000 vòng = 1)
   Bộ lọc: (mười <7)
   Hàng bị xóa bởi bộ lọc: 3000
 Thời gian lập kế hoạch: 0,083 ms
 Thời gian thực hiện: 5.905 ms

Các số này có thể đặc biệt có giá trị cho các điều kiện lọc được áp tỷ lệ kèo bóng đá tối nay tại các nút nối. The"Đã xóa tỷ lệ kèo bóng đá tối nay"Dòng chỉ xuất hiện khi ít nhất một tỷ lệ kèo bóng đá tối nay được quét hoặc cặp tham gia tiềm năng trong trường hợp của nút nối, bị từ chối bởi điều kiện bộ lọc.

tỷ lệ kèo bóng đá tối nay trường hợp tương tự như điều kiện bộ lọc xảy ra với"Mất"37409_37500

37523_37988

Người lập kế hoạch nghĩ (khá chính xác) rằng bảng mẫu này quá nhỏ để làm phiền với việc quét chỉ mục, vì vậy chúng tôi có một lần quét tuần tự đơn giản trong đó tất cả các tỷ lệ kèo bóng đá tối nay bị từ chối bởi điều kiện lọc. Nhưng nếu chúng ta buộc phải quét chỉ mục, chúng ta sẽ thấy:

Đặt enable_seqscan TẮT;

Giải tỷ lệ kèo bóng đá tối nay Phân tích Chọn * từ polygon_tbl trong đó f1 @ polygon '(0,5,2.0)';

                                                        Kế hoạch truy vấn
------------------------------------------------------------------------------------------------------------------------------------------
 Quét chỉ số bằng Gpolygonind vào polygon_tbl (chi phí = 0,13..8.15 hàng = 1 chiều rộng = 32) (thời gian thực tế = 0,062..0.062 hàng = 0 vòng = 1)
   Chỉ mục Cond: (f1 @ '((0,5,2))' :: Polygon)
   Hàng bị xóa bằng cách kiểm tra lại chỉ mục: 1
 Thời gian lập kế hoạch: 0,034 ms
 Thời gian thực hiện: 0.144 ms

Ở đây chúng ta có thể thấy rằng chỉ mục đã trả lại một tỷ lệ kèo bóng đá tối nay ứng cử viên, sau đó bị từ chối bởi một điều kiện kiểm tra lại. Điều này xảy ra bởi vì một chỉ mục ý chính là"Mất"Đối với các bài kiểm tra ngăn chặn đa giác: Nó thực sự trả về các tỷ lệ kèo bóng đá tối nay với các đa giác chồng lên mục tiêu, và sau đó chúng ta phải thực hiện kiểm tra ngăn chặn chính xác trên các tỷ lệ kèo bóng đá tối nay đó.

Giải tỷ lệ kèo bóng đá tối naybộ đệmtùy chọn có thể được sử tỷ lệ kèo bóng đá tối nay vớiPhân tíchĐể có thêm số liệu thống kê thời gian chạy hơn:

Giải tỷ lệ kèo bóng đá tối nay (phân tích, bộ đệm) Chọn * từ TENK1 trong đó độc đáo1 <100 và độc đáo2 9000;

                                                           Kế hoạch truy vấn
----------------------------------------------------------------------------------------------------------------------------------------------------------
 Quét heap bitmap trên TENK1 (chi phí = 25,08..60,21 hàng = 10 chiều rộng = 244) (thời gian thực tế = 0.323..0.342 hàng = 10 vòng = 1)
   RECHECK COND: ((độc đáo1 <100) và (độc đáo2 9000)))
   Bộ đệm: hit được chia sẻ = 15
   - bitmapand (chi phí = 25,08..25,08 hàng = 10 chiều rộng = 0) (thời gian thực tế = 0,309..0.309 hàng = 0 vòng = 1)
         Bộ đệm: chia sẻ hit = 7
         - Quét chỉ số bitmap trên tenk1_unique1 (chi phí = 0,00..5,04 hàng = 101 chiều rộng = 0) (thời gian thực tế = 0,043..0.043 hàng = 100 vòng = 1)
               Index Cond: (độc đáo1 <100)
               Bộ đệm: chia sẻ hit = 2
         - Quét chỉ số bitmap trên tenk1_unique2 (chi phí = 0,00..19,78 hàng = 999 chiều rộng = 0) (thời gian thực tế = 0,227..0.227 hàng = 999 vòng = 1)
               Index Cond: (độc đáo2 9000)
               Bộ đệm: chia sẻ hit = 5
 Thời gian lập kế hoạch: 0,088 ms
 Thời gian thực hiện: 0.423 ms

tỷ lệ kèo bóng đá tối nay số được cung cấp bởibộ đệm40556_40628

Hãy nhớ rằng vìGiải tỷ lệ kèo bóng đá tối nay Phân tích40700_4085840876_40885Dữ liệu. Nếu bạn muốn phân tích truy vấn biến đổi dữ liệu mà không cần thay đổi bảng, bạn có thể cuộn lệnh lại sau đó, ví dụ:

41050_41841

Như đã thấy trong ví dụ này, khi truy vấn làChèn, Cập nhật41959_41966XóaLệnh, công việc thực tế của việc áp tỷ lệ kèo bóng đá tối nay các thay đổi bảng được thực hiện bằng một nút chèn, cập nhật hoặc xóa cấp độ cao nhất. Các nút kế hoạch bên dưới nút này thực hiện công việc định vị các hàng cũ và/hoặc tính toán dữ liệu mới. Ở trên, chúng ta thấy cùng loại quét bảng bitmap mà chúng ta đã thấy và đầu ra của nó được đưa vào một nút cập nhật lưu trữ các hàng được cập nhật. Điều đáng chú ý là mặc dù nút biến đổi dữ liệu có thể mất một lượng thời gian chạy đáng kể (ở đây, nó tiêu thụ phần của sư tử thời gian), nhưng người lập kế hoạch hiện không thêm bất cứ thứ gì vào ước tính chi phí để tính đến công việc đó. Đó là bởi vì công việc phải làm là giống nhau cho mọi kế hoạch truy vấn chính xác, vì vậy nó không ảnh hưởng đến các quyết định lập kế hoạch.

KhiCập nhậthoặcXóaLệnh ảnh hưởng đến hệ thống phân cấp kế thừa, đầu ra có thể trông như thế này:

Giải tỷ lệ kèo bóng đá tối nay Cập nhật cha mẹ F2 = F2 + 1 trong đó F1 = 101;
                                    Kế hoạch truy vấn
-------------------------------------------------------------------------------------------
 Cập nhật trên cha mẹ (chi phí = 0,00..24,53 hàng = 4 chiều rộng = 14)
   Cập nhật về cha mẹ
   Cập nhật về trẻ em1
   Cập nhật về trẻ em2
   Cập nhật về trẻ em3
   - SEQ SCAN trên cha mẹ (chi phí = 0,00..0.00 hàng = 1 chiều rộng = 14)
         Bộ lọc: (F1 = 101)
   - Quét chỉ mục bằng trẻ em
         Chỉ mục Cond: (F1 = 101)
   - Quét chỉ mục bằng trẻ con
         Chỉ mục Cond: (F1 = 101)
   - Quét chỉ mục bằng trẻ em
         Chỉ mục cond: (f1 = 101)

Trong ví dụ này, nút cập nhật cần xem xét ba bảng con cũng như bảng cha mẹ được đề cập ban đầu. Vì vậy, có bốn phân nhóm quét đầu vào, một trên mỗi bảng. Để rõ ràng, nút cập nhật được chú tỷ lệ kèo bóng đá tối nay để hiển thị các bảng mục tiêu cụ thể sẽ được cập nhật, theo thứ tự tương tự như các mẫu con tương ứng. (Những chú tỷ lệ kèo bóng đá tối nay này là mới nhưPostgreSQL9.5; Trong tỷ lệ kèo bóng đá tối nay phiên bản trước, người đọc phải trực quan tỷ lệ kèo bóng đá tối nay bảng mục tiêu bằng cách kiểm tra tỷ lệ kèo bóng đá tối nay sơ đồ con.)

TheThời gian lập tỷ lệ kèo bóng đá tối nayHiển thị bởiGiải tỷ lệ kèo bóng đá tối nay Phân tíchlà thời gian cần thiết để tạo tỷ lệ kèo bóng đá tối nay truy vấn từ truy vấn được phân tích cú pháp và tối ưu hóa nó. Nó không bao gồm phân tích cú pháp hoặc viết lại.

TheThời gian thực hiệnHiển thị bởiGiải tỷ lệ kèo bóng đá tối nay Phân tíchBao gồm thời gian khởi động và tắt máy thực thi, cũng như thời gian để chạy bất kỳ yếu tố kích hoạt nào được bắn, nhưng nó không bao gồm phân tích cú pháp, viết lại hoặc lập tỷ lệ kèo bóng đá tối nay thời gian. Thời gian dành để thực hiệntrướcTriggers, nếu có, được bao gồm trong thời gian cho nút chèn, cập nhật hoặc xóa liên quan; Nhưng thời gian dành cho việc thực hiệnsauTriggers không được tính ở đó vìsauKích hoạt được bắn sau khi hoàn thành toàn bộ tỷ lệ kèo bóng đá tối nay. Tổng thời gian dành cho mỗi lần kích hoạt (trướchoặcsau) cũng được hiển thị riêng. Lưu ý rằng tỷ lệ kèo bóng đá tối nay kích hoạt ràng buộc hoãn lại sẽ không được thực thi cho đến khi kết thúc giao dịch và do đó không được xem xét bởiGiải tỷ lệ kèo bóng đá tối nay Phân tích.

14.1.3. Hãy cẩn thận

Có hai cách quan trọng trong đó thời gian chạy được đo bằngGiải tỷ lệ kèo bóng đá tối nay Phân tíchcó thể đi chệch khỏi việc thực hiện bình thường của cùng một truy vấn. Đầu tiên, vì không có tỷ lệ kèo bóng đá tối nay đầu ra nào được cung cấp cho máy khách, chi phí truyền mạng và chi phí chuyển đổi I/O không được bao gồm. Thứ hai, chi phí đo được thêm vào bởiGiải tỷ lệ kèo bóng đá tối nay Phân tíchcó thể có ý nghĩa, đặc biệt là trên tỷ lệ kèo bóng đá tối nay máy có chậmgetTimeOfday ()Cuộc gọi hệ điều hành. Bạn có thể sử tỷ lệ kèo bóng đá tối naykèo tỷ số bóngCông cụ để đo chi phí thời gian trên hệ thống của bạn.

Giải tỷ lệ kèo bóng đá tối nayKết quả không nên được ngoại suy đến các tình huống khác nhiều so với trường hợp bạn thực sự đang thử nghiệm; Ví dụ, kết quả trên một bàn có kích thước đồ chơi không thể được giả định để áp tỷ lệ kèo bóng đá tối nay cho các bảng lớn. Ước tính chi phí của người lập kế hoạch không phải là tuyến tính và vì vậy nó có thể chọn một kế hoạch khác cho một bảng lớn hơn hoặc nhỏ hơn. Một ví dụ cực đoan là trên một bảng chỉ chiếm một trang đĩa, gần như bạn sẽ luôn nhận được một kế hoạch quét tuần tự cho dù chỉ mục có sẵn hay không. Người lập kế hoạch nhận ra rằng sẽ mất một trang một trang để xử lý bảng trong mọi trường hợp, do đó, không có giá trị trong việc sử tỷ lệ kèo bóng đá tối nay các lần đọc trang bổ sung để xem một chỉ mục. (Chúng tôi đã thấy điều này xảy ra trongpolygon_tblVí dụ ở trên.)

Có những trường hợp trong đó các giá trị thực tế và ước tính sẽ không phù hợp tốt, nhưng không có gì thực sự sai. Một trường hợp như vậy xảy ra khi thực hiện nút tỷ lệ kèo bóng đá tối nay bị dừng ngắn bởigiới hạnhoặc hiệu ứng tương tự. Ví dụ, tronggiới hạnTruy vấn chúng tôi đã sử tỷ lệ kèo bóng đá tối nay trước đó,

47159_47829

47837_48219

48225_48650Giới hạn. Ngoài ra, nếu con bên ngoài (thứ nhất) chứa các hàng có giá trị khóa trùng lặp, thì con bên trong (thứ hai) được sao lưu và tỷ lệ kèo bóng đá tối nay cứu cho phần của các hàng phù hợp với giá trị khóa đó.Giải tỷ lệ kèo bóng đá tối nay Phân tíchđếm các phát thải lặp đi lặp lại này có cùng các tỷ lệ kèo bóng đá tối nay bên trong như thể chúng là các tỷ lệ kèo bóng đá tối nay bổ sung thực sự. Khi có nhiều bản sao bên ngoài, số lượng tỷ lệ kèo bóng đá tối nay thực tế được báo cáo cho nút Kế hoạch con bên trong có thể lớn hơn đáng kể so với số lượng tỷ lệ kèo bóng đá tối nay thực sự trong mối quan hệ bên trong.

Các nút bitmapand và bitmapor luôn báo cáo số lượng tỷ lệ kèo bóng đá tối nay thực của chúng là số không, do giới hạn thực hiện.