Phần này bao gồm các chi tiết triển khai chỉ kèo bóng đá hom 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/ReadMe
Trong phân phối nguồn cho mô tả tập trung vào nội bộ hơn nhiều về việc triển khai B-Tree.
PostgreSQL7674_8325Phần 70.6.
Các trang lá mới được thêm vào chỉ kèo bóng đá hom nay B-cây khi một trang lá hiện tại không thể phù hợp với một tuple đến. MỘTTách trangHoạt động tạo chỗ cho các kèo bóng đá hom nay ban đầu thuộc về trang tràn bằng cách di chuyển một phần của các kèo bóng đá hom 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, có thể khiến cha mẹ chia lần lượt. Trang chia táchCascade lên trên8940_8943theo 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 kèo bóng đá hom nay cấp độ mới vào cấu trúc cây bằng cách tạo kèo bóng đá hom nay trang gốc mới là kèo bóng đá hom nay cấp trên trang gốc gốc.
Các chỉ kèo bóng đá hom nay B-cây không biết 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ỉ kèo bóng đá hom nay, mỗi tuple là một đối tượng độc lập cần kèo bóng đá hom nay nhập chỉ kèo bóng đá hom nay riêng của nó.Phiên bản ChurnxôngTuples đô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 kèo bóng đá hom 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ỉ kèo bóng đá hom nay trong mộtCập nhật
luôn luônYêu cầu một bộ tổng chỉ kèo bóng đá hom nay mới - một choMỗi và mọiChỉ kèo bóng đá hom nay trên bảng. Lưu ý cụ thể rằng điều này bao gồm các chỉ kèo bóng đá hom nay không phảiSửa đổi về mặt logicHồibởiCập nhật
10517_10706HồiCập nhậtHồiTuple trong kèo bóng đá hom nay khoảng thời gian ngắn (thường là cho đến khi ngay sauCập nhật
giao dịch cam kết).
10905_10984Xóa chỉ kèo bóng đá hom 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ánHồiPhân chia trang phân chia phiên bảnHồi. Điều này chỉ xảy ra với các chỉ kèo bóng đá hom nay không được sửa đổi về mặt logic bởiCập nhật
11287_11953Định tínhPhân biệt liên quan đến kèo bóng đá hom nay hàng và phiên bản logic. Điều này tương phản vớitừ trên xuốngxôngViệc dọn dẹp chỉ kèo bóng đá hom 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 25.1.6).
Không phải tất cả các hoạt động xóa được thực hiện trong các chỉ kèo bóng đá hom nay B-cây là các hoạt động xóa từ dưới lên. Có một danh kèo bóng đá hom 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ỉ kèo bóng đá hom nay được biết là an toàn để xóa (những người có định danh kèo bóng đá hom naylp_dead
bit đã được đặt). Giống như xóa chỉ kèo bóng đá hom nay từ dưới lên, việc xóa chỉ kèo bóng đá hom 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ỉ kèo bóng đá hom nay gần đây đặtLP_DEAD
Các kèo bóng đá hom nay bị ảnh hưởng khi đi qua. TrướcPostgreSQL14, Danh kèo bóng đá hom 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 kèo bóng đá hom nay tiêu phiên bản từCập nhật
S không sửa đổi một cách hợp lý các cột được lập chỉ kèo bóng đá hom nay.
Xóa chỉ kèo bóng đá hom 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ỉ kèo bóng đá hom 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ỉ kèo bóng đá hom nay B-Tree nào chịu phiên bản quan trọng từCập nhật
s 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ỉ kèo bóng đá hom 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 kèo bóng đá hom nay tiêu. Hoàn toàn có khả năng kích thước trên đĩa của các chỉ kèo bóng đá hom 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ật
s. Thậm chí sau đó, kèo bóng đá hom nay người đầy đủMạnhquét sạchHồibởi AVACUUM
Hoạt động (thường chạy trong quy trình công nhân ô tô) cuối cùng sẽ được yêu cầu như kèo bóng đá hom nay phần củatập thểLàm sạch bảng và mỗi chỉ kèo bóng đá hom nay của nó.
Không giống nhưVACUUM
, 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ỉ kèo bóng đá hom nay nào được phép giữ lạiRác nổiCác tổng chỉ kèo bóng đá hom 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ỉ kèo bóng đá hom nay của nó. 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 kèo bóng đá hom 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 nhauNút hút
Chu kỳ).
15684_15762tất cả15802_16101.
16152_16252Danh sách đăngTuple cho mỗi nhóm. Giá trị khóa cột chỉ xuất hiện kèo bóng đá hom nay lần trong biểu diễn này. Điều này được theo sau bởi kèo bóng đá hom nay mảng được sắp xếp củaTID16453_16824
B B-Tree sao chép cũng hiệu quả vớitrùng lặpcó chứa giá trị null, mặc dù kèo bóng đá hom 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ỉ kèo bóng đá hom nay.
Quá trình trùng lặ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ỉ kèo bóng đá hom nay không thể miễn phí không gian đủ cho kèo bóng đá hom 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ỉ kèo bóng đá hom nay
vàReindex
Áp dụng sự trùng lặ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 kèo bóng đá hom 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. kèo bóng đá hom 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ỉ kèo bóng đá hom nay
vàReindex
18792_18838
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ỉ kèo bóng đá hom 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_Items
Tham số lưu trữ có thể được sử dụng để vô hiệu hóa sự trùng lặp trong các chỉ kèo bóng đá hom 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ỉ kèo bóng đá hom 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ụHồiPhiên bản bổ sung trùng lặp. Sự sao chép trong các chỉ kèo bóng đá hom 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. kèo bóng đá hom 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.
Một heuristic đặc biệt được áp dụng để xác định xem có nên diễn ra một chỉ số trùng lặp trong một chỉ kèo bóng đá hom nay duy nhất hay không. Nó thường có thể bỏ qua thẳng để phân tách một trang lá, tránh hình phạt hiệu suất khỏi các chu kỳ lãng phí trên các đường chẵn không kết thúc không có ích. Nếu bạn lo lắng về chi phí của sự trùng lặp, hãy xem xét cài đặtcó chọn lọc. Để lại sự trùng lặp được bật trong các chỉ kèo bóng đá hom 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ỉ kèo bóng đá hom nay
hoặcReindex
được chạy.
Lưu ý rằng sự trùng lặp được coi là không an toàn và không thể được sử dụng trong kèo bóng đá hom nay trường hợp sau đây liên quan đến sự khác biệt có ý nghĩa về mặt ngữ nghĩa giữa kèo bóng đá hom nay dữ liệu bằng nhau:
Text
, Varchar
vàchar
Khô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 kèo bóng đá hom 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 kèo bóng đá hom nay dữ liệu bằng nhau.
JSONB
Không thể sử dụng sự trùng lặp, vìJSONB
Lớp toán tử B-cây sử dụngSố
nội bộ.
float4
vàfloat8
Không thể sử dụng sự trùng lặp. kèo bóng đá hom nay loại này có kèo bóng đá hom nay biểu diễn riêng biệt cho-0
và0
, 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ó kèo bóng đá hom nay hạn chế cấp thực hiện thêm có thể được nâng lên trong phiên bản tương lai củaPostgreSQL:
kèo bóng đá hom nay loại container (như kèo bóng đá hom 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ó kèo bóng đá hom nay hạn chế cấp độ triển khai tiếp theo áp dụng bất kể lớp toán tử hoặc đối chiếu được sử dụng:
Bao gồm
Chỉ kèo bóng đá hom nay không bao giờ có thể sử dụng sự trùng lặp.
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.