Phiên bản được hỗ trợ:16 / 15 / 14 / 13
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
Tài tỷ lệ kèo bóng đá 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 một trang chohiện tạiPhiên bản hoặc một tỷ lệ kèo bóng đá các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

tỷ lệ kèo bóng đá60.4. Triển khai

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.

60.4.1. Giới hạn sp-gist

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ànhPickSplitHà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.

60.4.2. Sp-gist không có nhãn tỷ lệ kèo bóng đá

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.PickSplitHà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ọnInside_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.

60.4.3."Tất cả-Same"Bộ dữ tỷ lệ kèo bóng đá bên trong

Thesp-gistCore có thể ghi đè kết quả của lớp vận hànhPickSplitchức năng khiPickSplitKhô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ọnInside_consistentCá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ọnkế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_consistentHà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_consistentHàm thường giả sử về ý nghĩa của các tỷ lệ kèo bóng đá.