PostgreSQL: soi kèo bóng đá truoctran liệu: 9.5: PostgreSQL | |||
---|---|---|---|
Prev | UP | Chương 60. SP-Gist Indexes | Tiếp theo |
Phần này bao gồm các chi tiết triển khai và các thủ thuật khác hữu ích cho người thực hiệnsp-gistCác lớp toán tử để biết.
Bộ dữ tỷ lệ kèo bóng đá lá riêng lẻ và bộ dữ tỷ lệ kèo bóng đá bên trong phải phù hợp với một trang chỉ mục (8kb theo mặc định). Do đó, khi lập chỉ mục các giá trị của các loại dữ tỷ lệ kèo bóng đá có độ dài thay đổi, các giá trị dài chỉ có thể được hỗ trợ bằng các phương thức như cây radix, trong đó mỗi cấp độ của cây bao gồm một tiền tố đủ ngắn để phù hợp với một trang và mức lá cuối cùng bao gồm một hậu tố cũng đủ ngắn để phù hợp với trang.LongValuesokchỉ đúng nếu nó được chuẩn bị để sắp xếp điều này xảy ra. Nếu không,sp-gistCore sẽ từ chối mọi yêu cầu để lập chỉ mục một giá trị quá lớn để phù hợp với trang chỉ mục.
Tương tự như vậy, trách nhiệm của lớp vận hành là các bộ dữ tỷ lệ kèo bóng đá bên trong không phát triển quá lớn để phù hợp với trang chỉ mục; Điều này giới hạn số lượng nút con có thể được sử dụng trong một bộ bên trong, cũng như kích thước tối đa của giá trị tiền tố.
Một giới hạn khác là khi nút của một tuple bên trong chỉ vào một tập hợp các bộ dữ tỷ lệ kèo bóng đá lá, tất cả các bộ dữ tỷ lệ kèo bóng đá đó phải nằm trong cùng một trang chỉ mục. .phảiChia tập hợp các giá trị lá thành nhiều hơn một nhóm tỷ lệ kèo bóng đá. Nếu lớp vận hànhPickSplit
Hàm không làm điều đó,sp-gistKhu nghỉ dưỡng cốt lõi để các biện pháp phi thường được mô tả tỷ lệ kèo bóng đáPhần 60.4.3.
Một số thuật toán cây sử dụng một tập hợp các tỷ lệ kèo bóng đá cố định cho mỗi tuple bên trong; Ví dụ, trong một cây bốn, luôn có chính xác bốn tỷ lệ kèo bóng đá tương ứng với bốn góc phần tư xung quanh điểm trung tâm của Tuple bên trong.PickSplit
Hàm có thể trả về null choNodelabelsMảng. Điều này sẽ lần lượt dẫn đếnNodelabelsĐang null tỷ lệ kèo bóng đá các cuộc gọi tiếp theo đếnChọn
vàInside_consistent
. Về nguyên tắc, các nhãn nút có thể được sử dụng cho một số bộ dữ tỷ lệ kèo bóng đá bên trong và bị bỏ qua cho những người khác trong cùng một chỉ mục.
Khi làm việc với một tuple bên trong có các tỷ lệ kèo bóng đá không nhãn, đó là một lỗi choChọn
để trả lạispgaddnode, vì tập hợp các tỷ lệ kèo bóng đá được cho là được sửa trong các trường hợp như vậy. Ngoài ra, không có điều khoản nào để tạo một tỷ lệ kèo bóng đá không nhãn trongspgsplittupleHành động, vì người ta dự kiến sẽ là mộtspgaddnodehành động cũng sẽ cần thiết.
Thesp-gistCore có thể ghi đè kết quả của lớp vận hànhPickSplit
chức năng khiPickSplit
Không chia các giá trị lá được cung cấp thành ít nhất hai loại tỷ lệ kèo bóng đá. Khi điều này xảy ra, bộ tuple bên trong mới được tạo với nhiều tỷ lệ kèo bóng đá có cùng một nhãn (nếu có)PickSplit
Đã cho một tỷ lệ kèo bóng đá mà nó đã sử dụng và các giá trị lá được chia ngẫu nhiên giữa các tỷ lệ kèo bóng đá tương đương này. TheAllthesameCờ được đặt trên bộ tuple bên tỷ lệ kèo bóng đá để cảnh báoChọn
vàInside_consistent
Các chức năng mà Tuple không có bộ tỷ lệ kèo bóng đá mà họ có thể mong đợi.
Khi xử lýAllthesametuple, aChọn
kết quả củaSPGMatchNodeđược giải thích có nghĩa là giá trị mới có thể được gán cho bất kỳ tỷ lệ kèo bóng đá tương đương nào; Mã cốt lõi sẽ bỏ qua được cung cấpNodenGiá trị và hạ xuống một trong các tỷ lệ kèo bóng đá một cách ngẫu nhiên (để giữ cho cây cân bằng). Nó là một lỗi choChọn
để trả lạispgaddnode, vì điều đó sẽ làm cho các tỷ lệ kèo bóng đá không tương đương; ThespgsplittupleHành động phải được sử dụng nếu giá trị được chèn không khớp với các tỷ lệ kèo bóng đá hiện có.
Khi xử lýAllthesametuple, TheInside_consistent
Hàm sẽ trả về tất cả hoặc không có tỷ lệ kèo bóng đá nào làm mục tiêu để tiếp tục tìm kiếm chỉ mục, vì tất cả chúng đều tương đương. Điều này có thể hoặc không yêu cầu bất kỳ mã trường hợp đặc biệt nào, tùy thuộc vào số lượngInside_consistent
Hàm thường giả sử về ý nghĩa của các tỷ lệ kèo bóng đá.