Phần này bao gồm kèo bóng đá euro chi tiết triển khai chỉ mục 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.
PostgreSQL7625_8276Phần 73.6.
kèo bóng đá euro trang lá mới được thêm vào chỉ mục 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 kèo bóng đá euro mục ban đầu thuộc về trang tràn bằng cách di chuyển một phần của kèo bóng đá euro mục 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ênHồitheo 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 đá euro cấp độ mới vào cấu trúc cây bằng cách tạo kèo bóng đá euro trang gốc mới là kèo bóng đá euro cấp trên trang gốc gốc.
kèo bóng đá euro chỉ mục 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ỉ mục, mỗi tuple là một đối tượng độc lập cần mục nhập chỉ mục riêng của nó.MạnhPhiên bản ChurnxôngTuples đôi khi có thể tích lũy và ảnh hưởng xấu đến độ trễ và thông lượng truy vấn. Đ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 đá euro 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 đá euro trong mộtCập nhật
luôn luônYêu cầu một bộ tổng chỉ kèo bóng đá euro mới - một choMỗi và mọiChỉ mục trên bảng. Lưu ý cụ thể rằng điều này bao gồm kèo bóng đá euro chỉ mục không phảiHồiSửa đổi về mặt logicHồibởiCập nhật
10468_10657Cập nhậtxôngTuple trong kèo bóng đá euro khoảng thời gian ngắn (thường là cho đến khi ngay sauCập nhật
giao dịch cam kết).
10856_10935Xóa chỉ kèo bóng đá euro 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 phiên bản phiên bản”. Điều này chỉ xảy ra với kèo bóng đá euro chỉ mục không được sửa đổi về mặt logic bởiCập nhật
11238_11904Định tínhPhân biệt liên quan đến kèo bóng đá euro hàng và phiên bản logic. Điều này tương phản vớitừ trên xuốngViệc dọn dẹp chỉ mục được thực hiện bởi kèo bóng đá euro 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ả kèo bóng đá euro hoạt động xóa được thực hiện trong kèo bóng đá euro chỉ mục B-cây là kèo bóng đá euro hoạt động xóa từ dưới lên. Có một danh mục riêng biệt về xóa tuple:Xóa Tuple Index đơn giản12672_12810lp_dead
bit đã được đặt). Giống như xóa chỉ kèo bóng đá euro từ dưới lên, việc xóa chỉ kèo bóng đá euro đơ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.
13022_13130LP_DEAD
kèo bóng đá euro mục bị ảnh hưởng khi đi qua. TrướcPostgreSQL14, loại 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 nó và xóa 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 kèo bóng đá euro lần quét chỉ số, trong khi chỉ có phần sau đặc biệt nhắm mục tiêu phiên bản từCập nhật
s không sửa đổi một cách hợp lý kèo bóng đá euro cột được lập chỉ mục.
Xóa chỉ mục từ dưới lên thực hiện phần lớn tất cả kèo bóng đá euro chỉ số rác làm sạch cho kèo bóng đá euro chỉ mục 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ỉ mục 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ý kèo bóng đá euro cột mà chỉ mục 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 kèo bóng đá euro đường chuyền xóa gia tăng được nhắm mục tiêu. Hoàn toàn có khả năng kích thước trên đĩa của kèo bóng đá euro chỉ mục 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 đá euro người đầy đủquét sạchKhănbởi ANút hút
Hoạ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ư kèo bóng đá euro phần củatập thểLàm sạch bảng và mỗi chỉ kèo bóng đá euro 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ề thời gian mà bộ chỉ số rác lâu đời nhất có thể. Không có chỉ kèo bóng đá euro nào được phép giữ lạiRác nổiKhănkèo bóng đá euro tổng chỉ mục đã chết trước một điểm cắt bảo thủ được chia sẻ bởi bảng và tất cả kèo bóng đá euro chỉ mục 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 đá euro 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 nhauVACUUM
Chu kỳ).
kèo bóng đá euro bản sao là kèo bóng đá euro trang Lá (kèo bóng đá euro tuple trỏ đến kèo bóng đá euro hàng bảng) trong đótất cả15753_1605216072_16087.
Sự trùng lặp hoạt động bằng cách hợp nhất kèo bóng đá euro nhóm kèo bóng đá euro bộ đôi trùng lặp định kỳ 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 kèo bóng đá euro lần trong biểu diễn này. Điều này được theo sau bởi kèo bóng đá euro mảng được sắp xếp củatids chỉ vào kèo bóng đá euro hàng trong bảng. Điều này làm giảm đáng kể kích thước lưu trữ của kèo bóng đá euro chỉ mục trong đó mỗi giá trị (hoặc mỗi kết hợp riêng biệt của kèo bóng đá euro giá trị cột) xuất hiện trung bình nhiều lần. Độ trễ của kèo bóng đá euro 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ể.
Sự trùng lặp B-cây cũng hiệu quả vớitrùng lặpHàngcó chứa giá trị null, mặc dù kèo bóng đá euro 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 kèo bóng đá euro giá trị được lập chỉ mục.
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ỉ mục không thể miễn phí đủ cho vật phẩm mới (thường bị xóa ngắn gọn và sau đó bỏ qua). Không giống như kèo bóng đá euro 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 kèo bóng đá euro 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 kèo bóng đá euro ứ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 đá euro
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 đá euro 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 đá euro 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 đá euro
vàReindex
Bởi vì chúng là hoạt động hàng loạt kèo bóng đá euro lần.
18799_19010DEDuplicate_Items
Tham số lưu trữ có thể được sử dụng để vô hiệu hóa sự trùng lặp trong kèo bóng đá euro chỉ mục 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 kèo bóng đá euro chỉ mục duy nhất (cũng như kèo bóng đá euro ràng buộc duy nhất) để sử dụng sự trùng lặp. Điều này cho phép kèo bóng đá euro trang lá tạm thờiHồihấp thụHồiPhiên bản bổ sung trùng lặp. Sự sao chép trong kèo bóng đá euro chỉ mục độ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. Mục 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.
20093_20418có chọn lọc. Để lại sự trùng lặp được bật trong kèo bóng đá euro chỉ mục 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 đá euro
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 đá euro 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 đá euro 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 đá euro mốc thời gian bằng nhau.
Số
Không thể sử dụng sự sao chép. Thang hiển thị số phải được bảo tồn giữa kèo bóng đá euro 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 đá euro loại này có kèo bóng đá euro 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 đá euro 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 đá euro loại container (như kèo bóng đá euro 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 đá euro 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 đá euro 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 phù hợ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.