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

64.1. Chỉ tỷ lệ kèo bóng đá tối nay B-Tree#

64.1.1. Giới thiệu#

PostgreSQLBao gồm việc triển khai tiêu chuẩnBtree(Cây chỉ số cân bằng đa chiều). Bất kỳ loại dữ liệu nào có thể được sắp xếp theo thứ tự tuyến tính được xác định rõ đều có thể được lập chỉ tỷ lệ kèo bóng đá tối nay bằng chỉ tỷ lệ kèo bóng đá tối nay Btree. Giới hạn duy nhất là một tỷ lệ kèo bóng đá tối nay nhập chỉ tỷ lệ kèo bóng đá tối nay không thể vượt quá khoảng một phần ba trang (sau khi nén bánh mì, nếu có).

8762_8916PostgreSQLĐại diện chung và sự hiểu biết về ngữ nghĩa sắp xếp. Do đó, họ đã có được một số tính năng vượt xa những gì cần thiết chỉ để hỗ trợ các chỉ tỷ lệ kèo bóng đá tối nay Btree và các phần của hệ thống khá xa so với BtreeAMSử dụng chúng.

64.1.2. Hành vi của tỷ lệ kèo bóng đá tối nay lớp toán tử B-cây#

như trongBảng 36.3, Lớp toán tử Btree phải cung cấp năm toán tử so sánh,<, <=, =, =. Người ta có thể mong đợi rằng<cũng nên là tỷ lệ kèo bóng đá tối nay phần của lớp toán tử, nhưng không phải vậy, vì nó gần như sẽ không bao giờ hữu ích khi sử dụng<Điều khoản trong tìm kiếm chỉ tỷ lệ kèo bóng đá tối nay. (Đối với một số tỷ lệ kèo bóng đá tối nay đích, người lập kế hoạch xử lý<được liên kết với lớp toán tử Btree; Nhưng nó tìm thấy toán tử đó thông qua=Liên kết tiêu cực của người vận hành, thay vì từpg_amop.)

Khi một số loại dữ liệu chia sẻ ngữ nghĩa phân loại gần như giống hệt nhau, tỷ lệ kèo bóng đá tối nay lớp toán tử của họ có thể được nhóm thành một họ vận hành. Làm như vậy là thuận lợi vì nó cho phép người lập kế hoạch thực hiện tỷ lệ kèo bóng đá tối nay khoản khấu trừ về so sánh loại chéo. Mỗi lớp toán tử trong họ phải chứa tỷ lệ kèo bóng đá tối nay toán tử loại đơn (và tỷ lệ kèo bóng đá tối nay chức năng hỗ trợ liên quan) cho kiểu dữ liệu đầu vào của nó, trong khi tỷ lệ kèo bóng đá tối nay toán tử so sánh loại chéo và tỷ lệ kèo bóng đá tối nay chức năng hỗ trợ làHồiLoosexôngTrong gia đình. Bạn nên đưa vào một tập hợp tỷ lệ kèo bóng đá tối nay toán tử loại chéo hoàn chỉnh trong gia đình, do đó đảm bảo rằng người lập kế hoạch có thể đại diện cho bất kỳ điều kiện so sánh nào mà nó suy ra từ tính chuyển tiếp.

Có tỷ lệ kèo bóng đá tối nay số giả định cơ bản rằng tỷ lệ kèo bóng đá tối nay gia đình vận hành Btree phải thỏa mãn:

  • AN=toán tử phải là mối quan hệ tương đương; nghĩa là, đối với tất cả tỷ lệ kèo bóng đá tối nay giá trị không nullA, B, Ccủa loại dữ liệu:

    • A = Alà đúng (Luật phản xạ)

    • nếuA = B, sau đóB = A(Luật đối xứng)

    • nếuA = BB = C, sau đóA = C(Luật chuyển tiếp)

  • A<Nhà điều hành phải là mối quan hệ đặt hàng mạnh mẽ; nghĩa là, đối với tất cả tỷ lệ kèo bóng đá tối nay giá trị không nullA, B, C:

    • A < Alà sai (Luật không phản hồi)

    • nếuA < BB < C, sau đóA < C(Luật chuyển tiếp)

  • Hơn nữa, đặt hàng là tổng số; nghĩa là, đối với tất cả tỷ lệ kèo bóng đá tối nay giá trị không nullA, B:

    • chính xác là tỷ lệ kèo bóng đá tối nay trongA < B, A = BB < Alà đúng (Luật trichotomy)

    (Luật trichotomy biện minh cho định nghĩa của hàm hỗ trợ so sánh, tất nhiên.)

Ba toán tử khác được xác định theo nghĩa=<Theo cách rõ ràng và phải hành động nhất quán với họ.

Đối với một gia đình vận hành hỗ trợ nhiều loại dữ liệu, tỷ lệ kèo bóng đá tối nay luật trên phải giữ khiA, B, Cđược lấy từ bất kỳ loại dữ liệu nào trong gia đình. tỷ lệ kèo bóng đá tối nay luật chuyển tiếp là khó nhất để đảm bảo, vì trong tỷ lệ kèo bóng đá tối nay tình huống loại chéo, chúng đại diện cho tỷ lệ kèo bóng đá tối nay tuyên bố rằng hành vi của hai hoặc ba toán tử khác nhau là nhất quán. Ví dụ, nó sẽ không hoạt động để đặtfloat8SốVào cùng tỷ lệ kèo bóng đá tối nay họ toán tử, ít nhất là không có ngữ nghĩa hiện tạiSốGiá trị được chuyển đổi thànhfloat8để so sánh với Afloat8. Vì độ chính xác hạn chế củafloat8, Điều này có nghĩa là có sự khác biệtSốtỷ lệ kèo bóng đá tối nay giá trị sẽ so sánh bằng cùng mộtfloat8Giá trị, và do đó luật chuyển tiếp sẽ thất bại.

16356_16569

16579_17048

64.1.3. Chức năng hỗ trợ B-Tree#

như trongBảng 36.9, Btree xác định tỷ lệ kèo bóng đá tối nay chức năng hỗ trợ tùy chọn và bốn yêu cầu. Năm phương thức do người dùng xác định là:

đặt hàng

Đối với mỗi kết hợp tỷ lệ kèo bóng đá tối nay loại dữ liệu mà họ vận hành Btree cung cấp tỷ lệ kèo bóng đá tối nay toán tử so sánh, nó phải cung cấp chức năng hỗ trợ so sánh, được đăng ký trongpg_amprocvới chức năng hỗ trợ số 1 vàAmprocleftType/AmprocrightTypebằng với tỷ lệ kèo bóng đá tối nay loại dữ liệu bên trái và bên phải để so sánh (nghĩa là, tỷ lệ kèo bóng đá tối nay loại dữ liệu tương tự mà tỷ lệ kèo bóng đá tối nay toán tử phù hợp được đăng ký trongpg_amop). Hàm so sánh phải lấy hai giá trị không nullABvà trả lạiINT32Giá trị đó là< 0, 0hoặc 0KhiA < B, A = BhoặcA B, tương ứng. Một kết quả null không được phép: Tất cả tỷ lệ kèo bóng đá tối nay giá trị của kiểu dữ liệu phải được so sánh. Nhìn thấysrc/backend/access/nbtree/nbtcompare.ccho tỷ lệ kèo bóng đá tối nay ví dụ.

19205_19361pg_get_collation ()Cơ chế.

Sortsupport

Tùy chọn, tỷ lệ kèo bóng đá tối nay gia đình vận hành Btree có thể cung cấpSắp xếp hỗ trợHàm (s), được đăng ký theo hàm hỗ trợ số 2. Các chức năng này cho phép thực hiện so sánh cho tỷ lệ kèo bóng đá tối nay đích sắp xếp theo cách hiệu quả hơn so với việc gọi hàm hỗ trợ so sánh. API liên quan đến điều này được xác định trongsrc/bao gồm/elils/sortsupport.h.

in_range

Tùy chọn, tỷ lệ kèo bóng đá tối nay gia đình vận hành Btree có thể cung cấpin_rangeHỗ trợ (s), được đăng ký theo hàm hỗ trợ số 3. Chúng không được sử dụng trong các hoạt động chỉ tỷ lệ kèo bóng đá tối nay Btree; Thay vào đó, họ mở rộng ngữ nghĩa của gia đình vận hành để nó có thể hỗ trợ các điều khoản cửa sổ chứaphạm vi Offset trướcphạm vi Offset sautỷ lệ kèo bóng đá tối nay loại ràng buộc khung (xemPhần 4.2.8). Về cơ bản, thông tin bổ sung được cung cấp là cách thêm hoặc trừ tỷ lệ kèo bóng đá tối nayOffsetGiá trị theo cách tương thích với thứ tự dữ liệu của gia đình.

ANin_rangeHàm phải có chữ ký

in_range (ValType1,cơ sởType1,OffsetType2,subbool,Bool)
trả về bool

Valcơ sởphải cùng loại, là tỷ lệ kèo bóng đá tối nay trong những loại được hỗ trợ bởi họ nhà điều hành (nghĩa là, tỷ lệ kèo bóng đá tối nay loại mà nó cung cấp tỷ lệ kèo bóng đá tối nay đơn đặt hàng). Tuy nhiên,Offsetcó thể thuộc loại khác, có thể là tỷ lệ kèo bóng đá tối nay loại không được gia đình hỗ trợ. tỷ lệ kèo bóng đá tối nay ví dụ là tích hợpTime_opsGia đình cung cấpin_rangeHàm cóOffsetthuộc loạiKhoảng. tỷ lệ kèo bóng đá tối nay gia đình có thể cung cấpin_rangeHàm cho bất kỳ loại được hỗ trợ nào và tỷ lệ kèo bóng đá tối nay hoặc nhiềuOffsetLoại. Mỗiin_rangeHàm nên được nhập vàopg_amprocvớiAmprocleftTypebằngType1AmprocrightTypebằngtype2.

ngữ nghĩa thiết yếu của tỷ lệ kèo bóng đá tối nayin_rangeHàm phụ thuộc vào hai tham số cờ Boolean. Nó sẽ thêm hoặc trừcơ sởOffset, sau đó so sánhValđến kết quả, như sau:

  • nếu!sub!, returnVal =(cơ sở + Offset)

  • nếu!sub, returnVal <=(cơ sở + Offset)

  • nếusub!, returnVal =(cơ sở - Offset)

  • nếusub, returnVal <=(cơ sở - Offset)

Trước khi làm như vậy, chức năng sẽ kiểm tra dấu hiệu củaOffset: Nếu nó nhỏ hơn 0, hãy tăng lỗierrcode_invalid_preceding_or_following_size(22013) với văn bản lỗi nhưkích thước trước hoặc sau không hợp lệ trong hàm cửa sổ. .in_rangeHàm để mã lõi không cần hiểuÍt hơn 0có nghĩa là cho tỷ lệ kèo bóng đá tối nay loại dữ liệu cụ thể.

tỷ lệ kèo bóng đá tối nay kỳ vọng bổ sung làin_rangetỷ lệ kèo bóng đá tối nay chức năng nên, nếu thực tế, tránh ném lỗi nếucơ sở + Offsethoặccơ sở - Offsetsẽ tràn. Kết quả so sánh chính xác có thể được xác định ngay cả khi giá trị đó sẽ nằm ngoài phạm vi của kiểu dữ liệu. Lưu ý rằng nếu kiểu dữ liệu bao gồm tỷ lệ kèo bóng đá tối nay khái niệm nhưMạnhVô cựchoặcNANHồi, có thể cần chăm sóc thêm để đảm bảo rằngin_rangeS kết quả đồng ý với thứ tự sắp xếp thông thường của họ vận hành.

Kết quả củain_rangeHàm phải phù hợp với thứ tự sắp xếp được áp đặt bởi gia đình người vận hành. Để chính xác, đưa ra bất kỳ giá trị cố định nào củaOffsetsub, sau đó:

  • nếuin_rangevới= Đúng là đúng đối với tỷ lệ kèo bóng đá tối nay sốVal1cơ sở, nó phải đúng với mọiVal2 <= Val1với cùng tỷ lệ kèo bóng đá tối naycơ sở.

  • nếu27546_27556với= Đúng là sai đối với tỷ lệ kèo bóng đá tối nay sốVal1cơ sở, nó phải sai cho mỗiVal2 = Val1Với cùng tỷ lệ kèo bóng đá tối naycơ sở.

  • nếuin_rangevớiÍt= Đúng là đúng đối với tỷ lệ kèo bóng đá tối nay sốValBase1, nó phải đúng với mọibase2 = Base1Với cùng tỷ lệ kèo bóng đá tối nayVal.

  • nếuin_rangevới= Đúng là sai đối với tỷ lệ kèo bóng đá tối nay sốValBase1, nó phải sai cho mỗibase2 <= Base1Với cùng tỷ lệ kèo bóng đá tối nayVal.

tỷ lệ kèo bóng đá tối nay câu tương tự với tỷ lệ kèo bóng đá tối nay điều kiện đảo ngược giữ khi= Sai.

Nếu loại được đặt hàng (Type1) có thể có được, đối chiếu thích hợp OID sẽ được chuyển choin_rangeHàm, sử dụng cơ chế pg_get_collation () tiêu chuẩn.

in_rangetỷ lệ kèo bóng đá tối nay chức năng không cần xử lý tỷ lệ kèo bóng đá tối nay đầu vào null và thông thường sẽ được đánh dấu nghiêm ngặt.

EqualImage

Tùy chọn, tỷ lệ kèo bóng đá tối nay họ vận hành Btree có thể cung cấpEqualImage(Bình đẳng ngụ ý bình đẳng hình ảnhKhăn) tỷ lệ kèo bóng đá tối nay chức năng hỗ trợ, được đăng ký theo chức năng hỗ trợ số 4. tỷ lệ kèo bóng đá tối nay chức năng này cho phép mã lõi xác định khi nào an toàn để áp dụng tối ưu hóa sao chép BTREE. Hiện nay,EqualImageCác chức năng chỉ được gọi khi xây dựng hoặc xây dựng lại một chỉ tỷ lệ kèo bóng đá tối nay.

ANEqualImageHàm phải có chữ ký

EqualImage (OpcIntype oid) Trả về Bool

Giá trị trả về là thông tin tĩnh về lớp vận hành và đối chiếu. Trở vềtruechỉ ra rằngđặt hàngHàm cho lớp toán tử được đảm bảo chỉ trả về0(Đối số bằng nhauHồi) Khi nóABĐối số cũng có thể thay thế mà không mất thông tin ngữ nghĩa. Không đăng kýEqualImagechức năng hoặc trả lạifalseCho biết rằng điều kiện này không thể được giả định để giữ.

TheOpcIntypeĐối số làPG_TYPE.oidcủa kiểu dữ liệu mà lớp toán tử chỉ tỷ lệ kèo bóng đá tối nay. Đây là một sự tiện lợi cho phép tái sử dụng cùng một cơ bảnEqualImagehàm trên tỷ lệ kèo bóng đá tối nay lớp toán tử. Nếu như​​OpcIntype31503_31585EqualImageHàm, sử dụng tiêu chuẩnpg_get_collation ()cơ chế.

Theo như lớp toán tử, trả vềTRUE31816_31911EqualImageHàm). Tuy nhiên, mã cốt lõi sẽ chỉ coi việc sao chép an toàn cho một chỉ tỷ lệ kèo bóng đá tối nay khimỗiCột được lập chỉ tỷ lệ kèo bóng đá tối nay sử dụng lớp toán tử đăng kýEqualImageHàm và mỗi hàm thực sự trả vềTRUEKhi được gọi.

Bình đẳng hình ảnh làgần nhưĐiều kiện tương tự như bình đẳng bitwise đơn giản. Có một sự khác biệt tinh tế: khi lập chỉ tỷ lệ kèo bóng đá tối nay một loại dữ liệu varlena, biểu diễn trên đĩa của hai hình ảnh bằng các mốc dữ liệu bằng nhau có thể không bằng nhau do ứng dụng không nhất quán củabánh mì nướngnén trên đầu vào. Chính thức, khi tỷ lệ kèo bóng đá tối nay lớp vận hànhEqualImagechức năng trả vềTRUE, an toàn khi cho rằngdatum_image_eq ()C chức năng sẽ luôn đồng ý với lớp vận hànhĐặt hàngHàm (với điều kiện là cùng tỷ lệ kèo bóng đá tối nay đối chiếu OID được truyền cho cảEqualImageđặt hàngchức năng).

Mã cốt lõi về cơ bản không thể suy ra bất cứ điều gì vềHồiBình đẳng ngụ ý bình đẳng hình ảnhKhănTrạng thái của một lớp toán tử trong một họ nhiều loại dữ liệu dựa trên tỷ lệ kèo bóng đá tối nay chi tiết từ tỷ lệ kèo bóng đá tối nay lớp toán tử khác trong cùng một gia đình. Ngoài ra, không hợp lý cho một gia đình vận hành để đăng ký loại chéoEqualImageHàm và cố gắng làm như vậy sẽ dẫn đến tỷ lệ kèo bóng đá tối nay lỗi. Điều này là bởi vìBình đẳng ngụ ý bình đẳng hình ảnhKhănTrạng thái không chỉ phụ thuộc vào ngữ nghĩa sắp xếp/bình đẳng, ít nhiều được xác định ở cấp độ gia đình của nhà điều hành. Nói chung, ngữ nghĩa mà tỷ lệ kèo bóng đá tối nay loại dữ liệu cụ thể phải được xem xét riêng.

Công ước theo sau là tỷ lệ kèo bóng đá tối nay lớp toán tử đi kèm với lõiPostgreSQLPhân phối là đăng ký tỷ lệ kèo bóng đá tối nay cổ phiếu, chungEqualImageHàm. Hầu hết tỷ lệ kèo bóng đá tối nay lớp vận hành đăng kýbtequalimage (), trong đó chỉ ra rằng sự trùng lặp là an toàn vô điều kiện. tỷ lệ kèo bóng đá tối nay lớp toán tử cho tỷ lệ kèo bóng đá tối nay loại dữ liệu có thể lấy được nhưTextĐăng ký, chỉ ra rằng sự trùng lặp là an toàn với tỷ lệ kèo bóng đá tối nay đối chiếu xác định. Thực tiễn tốt nhất cho tỷ lệ kèo bóng đá tối nay tiện ích mở rộng của bên thứ ba là đăng ký chức năng tùy chỉnh của riêng họ để giữ quyền kiểm soát.

Tùy chọn

Tùy chọn, tỷ lệ kèo bóng đá tối nay gia đình vận hành B-cây có thể cung cấpTùy chọn(Tùy chọn cụ thể của lớp vận hành) tỷ lệ kèo bóng đá tối nay chức năng hỗ trợ, được đăng ký theo hàm hỗ trợ số 5. ​​tỷ lệ kèo bóng đá tối nay chức năng này xác định một tập hợp tỷ lệ kèo bóng đá tối nay tham số có thể nhìn thấy

ANTùy chọnHỗ trợ phải có chữ ký

Tùy chọn (Relopts local_relopts *) trả về void

Hàm được chuyển tỷ lệ kèo bóng đá tối nay con trỏ đến Alocal_relopts35388_35538PG_HAS_OPCLASS_OPTES ()PG_GET_OPCLASS_OPTES ()Macros.

Hiện tại, không có lớp vận hành B-cây nào cóTùy chọnHỗ trợ chức năng. B-Tree không cho phép biểu diễn linh hoạt của tỷ lệ kèo bóng đá tối nay khóa như Gist, Sp-Gist, Gin và Brin làm. Vì thế,Tùy chọnCó lẽ không có nhiều ứng dụng trong phương thức truy cập chỉ tỷ lệ kèo bóng đá tối nay B-cây hiện tại. Tuy nhiên, chức năng hỗ trợ này đã được thêm vào cây B để đồng nhất và có thể sẽ tìm thấy việc sử dụng trong quá trình tiến hóa hơn nữa của B-cây trongPostgreSQL.

64.1.4. Triển khai#

Phần này bao gồm các chi tiết triển khai chỉ tỷ lệ kèo bóng đá tối nay B-cây có thể được sử dụng cho người dùng nâng cao. Nhìn thấysrc/backend/access/nbtree/readmeTrong phân phối nguồn cho mô tả chi tiết hơn, tập trung vào nội bộ về việc triển khai cây B.

64.1.4.1. Cấu trúc B-Tree#

PostgreSQLCác chỉ tỷ lệ kèo bóng đá tối nay B-cây là các cấu trúc cây đa cấp, trong đó mỗi cấp độ của cây có thể được sử dụng như một danh sách các trang liên kết gấp đôi. Một metapage duy nhất được lưu trữ ở một vị trí cố định khi bắt đầu tệp phân đoạn đầu tiên của chỉ tỷ lệ kèo bóng đá tối nay. Tất cả các trang khác là các trang lá hoặc trang nội bộ. Các trang lá là các trang ở mức thấp nhất của cây. Tất cả các cấp độ khác bao gồm các trang nội bộ. Mỗi trang lá chứa các bộ dữ liệu chỉ vào các hàng bảng. Mỗi trang nội bộ chứa các bộ dữ liệu chỉ vào cấp độ tiếp theo trong cây. Thông thường, hơn 99% của tất cả các trang là các trang lá. Cả trang nội bộ và trang lá đều sử dụng định dạng trang tiêu chuẩn được mô tả trongPhần 65.6.

Các trang lá mới được thêm vào chỉ tỷ lệ kèo bóng đá tối nay B-cây khi một trang lá hiện tại không thể phù hợp với một bộ tuple đến. MỘTTách trangHoạt động tạo chỗ cho các tỷ lệ kèo bóng đá tối nay ban đầu thuộc về trang tràn bằng cách di chuyển một phần của các tỷ lệ kèo bóng đá tối nay sang một trang mới. Tách trang cũng phải chèn một mớiđường xuốngđến trang mới trong trang cha mẹ, điều này có thể khiến cha mẹ chia lần lượt. Trang chia táchCascade trở lêntheo kiểu đệ quy. Khi trang gốc cuối cùng không thể phù hợp với đường xuống mới, APhân chia trang gốcHoạt động diễn ra. Điều này thêm tỷ lệ kèo bóng đá tối nay cấp độ mới vào cấu trúc cây bằng cách tạo tỷ lệ kèo bóng đá tối nay trang gốc mới là tỷ lệ kèo bóng đá tối nay cấp trên trang gốc gốc.

64.1.4.2. Xóa chỉ tỷ lệ kèo bóng đá tối nay từ dưới lên#

Các chỉ tỷ lệ kèo bóng đá tối nay B-cây không nhận thức trực tiếp rằng theo MVCC, có thể có nhiều phiên bản còn lại của cùng một hàng bảng logic; Đối với một chỉ tỷ lệ kèo bóng đá tối nay, mỗi tuple là một đối tượng độc lập cần tỷ lệ kèo bóng đá tối nay nhập chỉ tỷ lệ kèo bóng đá tối nay riêng của nó.Phiên bản ChurnTuples đôi khi có thể tích lũy và ảnh hưởng xấu đến độ trễ truy vấn và thông lượng. Điều này thường xảy ra vớiCập nhật-Heavy khối lượng công việc trong đó hầu hết tỷ lệ kèo bóng đá tối nay bản cập nhật riêng lẻ không thể áp dụngHOTTối ưu hóa.Thay đổi giá trị của chỉ một cột được bao phủ bởi một chỉ tỷ lệ kèo bóng đá tối nay trong mộtCập nhật luôn luônYêu cầu một tập hợp các bộ chỉ tỷ lệ kèo bóng đá tối nay mới - một choMỗi và mọiChỉ tỷ lệ kèo bóng đá tối nay trên bảng. Lưu ý cụ thể rằng điều này bao gồm các chỉ tỷ lệ kèo bóng đá tối nay không phảiSửa đổi về mặt logicbởiCập nhật. Tất cả các chỉ tỷ lệ kèo bóng đá tối nay sẽ cần một bộ chỉ số vật lý kế thừa chỉ vào phiên bản mới nhất trong bảng. Mỗi tuple mới trong mỗi chỉ tỷ lệ kèo bóng đá tối nay thường sẽ cần cùng tồn tại với bản gốcCập nhậtHồiTuple trong tỷ lệ kèo bóng đá tối nay khoảng thời gian ngắn (thường là cho đến khi ngay sauCập nhậtgiao dịch cam kết).

40383_40462Xóa chỉ tỷ lệ kèo bóng đá tối nay từ dưới lênVượt qua. Mỗi lần xóa được kích hoạt trong phản ứng với dự đoánPhân chia trang phân chia phiên bảnHồi. Điều này chỉ xảy ra với các chỉ tỷ lệ kèo bóng đá tối nay không được sửa đổi về mặt logic bởiCập nhậtCác câu lệnh, trong đó tập trung vào các phiên bản lỗi thời trong các trang cụ thể sẽ xảy ra khác. Việc phân chia trang thường sẽ được tránh, mặc dù có thể các phương pháp heuristic cấp độ triển khai nhất định sẽ không xác định và xóa ngay cả một bộ chỉ số rác (trong trường hợp đó, việc chia hoặc trùng lặp trang giải quyết vấn đề của một tuple mới không phù hợp trên trang lá). Số phiên bản trong trường hợp xấu nhất mà bất kỳ chỉ số nào quét phải đi qua (đối với bất kỳ hàng logic nào) là một đóng góp quan trọng cho khả năng đáp ứng và thông lượng của hệ thống tổng thể. Một tỷ lệ kèo bóng đá tối nay tiêu xóa chỉ số từ dưới lên Các tỷ lệ kèo bóng đá tối nay tiêu nghi ngờ các bộ rác trong một trang một lá dựa trênĐịnh tínhPhân biệt liên quan đến tỷ lệ kèo bóng đá tối nay hàng và phiên bản logic. Điều này tương phản vớitừ trên xuốngKhănDọn dẹp chỉ tỷ lệ kèo bóng đá tối nay được thực hiện bởi các công nhân Autovacuum, được kích hoạt khi nhất địnhĐịnh lượngNgưỡng cấp bảng bị vượt quá (xemPhần 24.1.6).

Lưu ý

Không phải tất cả các hoạt động xóa được thực hiện trong các chỉ tỷ lệ kèo bóng đá tối nay B-cây là các hoạt động xóa từ dưới lên. Có một danh tỷ lệ kèo bóng đá tối nay riêng biệt về xóa tuple:Xóa Tuple Index đơn giản. Đây là một hoạt động bảo trì trì hoãn để xóa các bộ dữ liệu chỉ tỷ lệ kèo bóng đá tối nay được biết là an toàn để xóa (những người có định danh tỷ lệ kèo bóng đá tối naylp_deadbit đã được đặt). Giống như xóa chỉ tỷ lệ kèo bóng đá tối nay từ dưới lên, việc xóa chỉ tỷ lệ kèo bóng đá tối nay đơn giản diễn ra tại điểm phân chia trang được dự đoán là một cách để tránh sự phân chia.

Xóa đơn giản là cơ hội theo nghĩa là nó chỉ có thể diễn ra khi các lần quét chỉ tỷ lệ kèo bóng đá tối nay gần đây đặtlp_deadCác tỷ lệ kèo bóng đá tối nay bị ảnh hưởng khi đi qua. TrướcPOSTGRESQL14, Danh tỷ lệ kèo bóng đá tối nay duy nhất của việc xóa cây B là xóa đơn giản. Sự khác biệt chính giữa xóa CNTT và từ dưới lên là chỉ có trước đây được điều khiển một cách cơ hội bởi hoạt động của các lần quét chỉ số, trong khi chỉ có phần sau đặc biệt nhắm tỷ lệ kèo bóng đá tối nay tiêu phiên bản từCập nhậts không sửa đổi một cách hợp lý các cột được lập chỉ tỷ lệ kèo bóng đá tối nay.

Xóa chỉ tỷ lệ kèo bóng đá tối nay từ dưới lên thực hiện phần lớn tất cả các chỉ số rác làm sạch cho các chỉ tỷ lệ kèo bóng đá tối nay cụ thể với khối lượng công việc nhất định. Điều này được mong đợi với bất kỳ chỉ tỷ lệ kèo bóng đá tối nay B-Tree nào chịu phiên bản quan trọng từCập nhậts hiếm khi hoặc không bao giờ sửa đổi một cách hợp lý các cột mà chỉ tỷ lệ kèo bóng đá tối nay bao gồm. Số phiên bản trung bình và trường hợp xấu nhất trên mỗi hàng logic có thể được giữ thấp hoàn toàn thông qua các đường chuyền xóa gia tăng được nhắm tỷ lệ kèo bóng đá tối nay tiêu. Hoàn toàn có khả năng kích thước trên đĩa của các chỉ tỷ lệ kèo bóng đá tối nay nhất định sẽ không bao giờ tăng thêm một trang/khối mặc dùhằng sốPhiên bản Churn từCập nhậts. Thậm chí sau đó, tỷ lệ kèo bóng đá tối nay người đầy đủquét sạchbởi AVACUUMHoạt động (thường chạy trong quy trình công nhân Autovacuum) cuối cùng sẽ được yêu cầu như tỷ lệ kèo bóng đá tối nay phần củatập thểLàm sạch bảng và mỗi chỉ tỷ lệ kèo bóng đá tối nay của nó.

Không giống nhưNút hút, Xóa chỉ số từ dưới lên không cung cấp bất kỳ sự đảm bảo mạnh mẽ nào về mức độ cũ mà bộ chỉ số rác lâu đời nhất có thể. Không có chỉ tỷ lệ kèo bóng đá tối nay nào được phép giữ lạiRác nổiKhănBộ dữ liệu chỉ tỷ lệ kèo bóng đá tối nay đã chết trước một điểm cắt bảo thủ được chia sẻ bởi bảng và tất cả các chỉ tỷ lệ kèo bóng đá tối nay của nó một cách chung. Sự bất biến ở cấp độ bảng cơ bản này làm cho việc tái chế bảng an toànTIDs. Đây là cách tỷ lệ kèo bóng đá tối nay hàng logic khác biệt có thể sử dụng lại cùng một bảngTIDTheo thời gian (mặc dù điều này không bao giờ có thể xảy ra với hai hàng logic có tuổi thọ cùng nhauVACUUMChu kỳ).

64.1.4.3. Sự sao chép#

45251_45329tất cảCác cột khóa được lập chỉ tỷ lệ kèo bóng đá tối nay có các giá trị khớp với các giá trị cột tương ứng từ ít nhất một trang trang lá khác trong cùng một chỉ tỷ lệ kèo bóng đá tối nay. Bộ dữ liệu trùng lặp là khá phổ biến trong thực tế. Các chỉ tỷ lệ kèo bóng đá tối nay B-cây có thể sử dụng biểu diễn đặc biệt, hiệu quả không gian cho các bản sao khi một kỹ thuật tùy chọn được bật:.

Sự trùng lặp hoạt động bằng cách hợp nhất tỷ lệ kèo bóng đá tối nay nhóm tỷ lệ kèo bóng đá tối nay bộ dữ liệu trùng lặp với nhau, tạo thành mộtDanh sách đăngTuple cho mỗi nhóm. Giá trị khóa cột chỉ xuất hiện tỷ lệ kèo bóng đá tối nay lần trong biểu diễn này. Điều này được theo sau bởi tỷ lệ kèo bóng đá tối nay mảng được sắp xếp củatids chỉ vào các hàng trong bảng. Điều này làm giảm đáng kể kích thước lưu trữ của các chỉ tỷ lệ kèo bóng đá tối nay trong đó mỗi giá trị (hoặc mỗi kết hợp riêng biệt của các giá trị cột) xuất hiện trung bình nhiều lần. Độ trễ của các truy vấn có thể được giảm đáng kể. Thông lượng truy vấn tổng thể có thể tăng đáng kể. Chi phí của máy hút bụi chỉ số thông thường cũng có thể được giảm đáng kể.

Lưu ý

Sự sao chép B-cây cũng hiệu quả vớitrùng lặpcó chứa giá trị null, mặc dù tỷ lệ kèo bóng đá tối nay giá trị null không bao giờ bằng nhau theo=Thành viên của bất kỳ lớp toán tử B-cây nào. Theo như bất kỳ phần nào của việc thực hiện có liên quan đến cấu trúc B-cây trên đĩa, NULL chỉ là một giá trị khác từ miền của các giá trị được lập chỉ tỷ lệ kèo bóng đá tối nay.

Quá trình sao chép xảy ra một cách uể oải, khi một mặt hàng mới được chèn không thể phù hợp trên trang Lá hiện có, mặc dù chỉ khi việc xóa chỉ tỷ lệ kèo bóng đá tối nay không thể miễn phí không gian đủ cho tỷ lệ kèo bóng đá tối nay mới (thường được xem xét ngắn gọn và sau đó bỏ qua). Không giống như các bộ dữ liệu đăng bài của Gin, danh sách đăng bài B-Tree không cần mở rộng mỗi khi chèn bản sao mới; Chúng chỉ là một biểu diễn vật lý thay thế của các nội dung logic gốc của trang Lá. Thiết kế này ưu tiên hiệu suất nhất quán với khối lượng công việc đọc-ghi hỗn hợp. Hầu hết các ứng dụng khách hàng ít nhất sẽ thấy một lợi ích hiệu suất vừa phải từ việc sử dụng sự trùng lặp. Sự trùng lặp được bật theo mặc định.

Tạo chỉ tỷ lệ kèo bóng đá tối nayReindexÁp dụng sao chép để tạo danh sách đăng bài, mặc dù chiến lược họ sử dụng hơi khác nhau. Mỗi nhóm tỷ lệ kèo bóng đá tối nay bộ dữ liệu thông thường trùng lặp đã gặp trong đầu vào được sắp xếp lấy từ bảng được hợp nhất thành một danh sách đăng bài TupleTrướcĐược thêm vào trang lá đang chờ xử lý hiện tại. Danh sách đăng cá nhân được đóng gói với nhiềuTIDs càng tốt. tỷ lệ kèo bóng đá tối nay trang lá được viết ra theo cách thông thường, mà không có bất kỳ sự kết hợp riêng biệt nào. Chiến lược này rất phù hợp vớiTạo chỉ tỷ lệ kèo bóng đá tối nayReindexBởi vì chúng là hoạt động hàng loạt tỷ lệ kèo bóng đá tối nay lần.

khối lượng công việc nặng không được hưởng lợi từ việc sao chép do có ít hoặc không có giá trị trùng lặp trong các chỉ tỷ lệ kèo bóng đá tối nay sẽ phải chịu một hình phạt hiệu suất nhỏ, cố định (trừ khi quá trình sao chép bị vô hiệu hóa rõ ràng). TheDEDuplicate_ItemsTham số lưu trữ có thể được sử dụng để vô hiệu hóa sự trùng lặp trong các chỉ tỷ lệ kèo bóng đá tối nay riêng lẻ. Không bao giờ có bất kỳ hình phạt hiệu suất nào với khối lượng công việc chỉ đọc, vì việc đọc danh sách đăng bài ít nhất là hiệu quả như đọc biểu diễn tuple tiêu chuẩn. Vô hiệu hóa sự trùng lặp thường không hữu ích.

Đôi khi có thể cho các chỉ tỷ lệ kèo bóng đá tối nay duy nhất (cũng như các ràng buộc duy nhất) để sử dụng sự trùng lặp. Điều này cho phép các trang lá tạm thờihấp thụPhiên bản bổ sung trùng lặp. Sự sao chép trong các chỉ tỷ lệ kèo bóng đá tối nay độc đáo làm tăng việc xóa chỉ số từ dưới lên, đặc biệt là trong trường hợp giao dịch chạy dài nắm giữ một ảnh chụp nhanh chặn thu gom rác. tỷ lệ kèo bóng đá tối nay tiêu là mua thời gian cho chiến lược xóa chỉ số từ dưới lên để có hiệu quả trở lại. Trì hoãn việc chia tách trang cho đến khi một giao dịch chạy dài một cách tự nhiên có thể cho phép việc xóa từ dưới lên thành công khi vượt qua xóa trước đó không thành công.

TIP

49733_50058có chọn lọc. Để lại sự trùng lặp được bật trong các chỉ tỷ lệ kèo bóng đá tối nay duy nhất có ít nhược điểm.

Không thể sao chép không thể được sử dụng trong mọi trường hợp do hạn chế cấp độ thực hiện. An toàn trùng lặp được xác định khiTạo chỉ tỷ lệ kèo bóng đá tối nayhoặcReindexđược chạy.

50444_50595

  • Text, VarcharCharKhông thể sử dụng sự trùng lặp khi ANondeterministicđối chiếu được sử dụng. Sự khác biệt về trường hợp và điểm nhấn phải được bảo tồn giữa tỷ lệ kèo bóng đá tối nay mốc thời gian bằng nhau.

  • SốKhông thể sử dụng sự trùng lặp. Thang hiển thị số phải được bảo tồn giữa tỷ lệ kèo bóng đá tối nay dữ liệu bằng nhau.

  • JSONBKhông thể sử dụng sự sao chép, vìJSONBLớp toán tử B-cây sử dụngSốnội bộ.

  • float4float8Không thể sử dụng sự trùng lặp. tỷ lệ kèo bóng đá tối nay loại này có tỷ lệ kèo bóng đá tối nay biểu diễn riêng biệt cho-00, tuy nhiên vẫn được coi là bằng nhau. Sự khác biệt này phải được bảo tồn.

Có tỷ lệ kèo bóng đá tối nay hạn chế cấp độ triển khai tiếp theo có thể được nâng lên trong phiên bản tương lai củaPOSTGRESQL:

  • tỷ lệ kèo bóng đá tối nay loại container (như tỷ lệ kèo bóng đá tối nay loại tổng hợp, mảng hoặc loại phạm vi) không thể sử dụng sự trùng lặp.

Có tỷ lệ kèo bóng đá tối nay hạn chế cấp độ triển khai tiếp theo áp dụng bất kể lớp vận hành hoặc đối chiếu được sử dụng:

  • Bao gồmChỉ tỷ lệ kèo bóng đá tối nay không bao giờ có thể sử dụng sự trùng lặp.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.