Tài liệu này dành cho phiên bản không được hỗ trợ của 토토 커뮤니티.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

52.3. Triển khai

Nội bộ, AGinINDEX chứa một chỉ mục B-cây được xây dựng trên các khóa, trong đó mỗi khóa là một phần tử của giá trị được lập chỉ mục (một thành viên của một mảng, cho Ví dụ) và nơi mỗi bộ trong trang Lá là một con trỏ đến một cây b trên các con trỏ heap (pt, cây đăng) hoặc một danh sách HEAP POINTERS (PL, Danh sách đăng bài) Nếu danh sách đủ nhỏ.

52.3.1. Kỹ thuật cập nhật nhanh Gin

Cập nhật AGinINDEX có xu hướng chậm vì bản chất nội tại của đảo ngược Chỉ mục: Chèn hoặc cập nhật một hàng đống có thể gây ra nhiều chèn vào chỉ mục (một cho mỗi khóa được trích xuất từ Giá trị được lập chỉ mục). Kể từ토토 커뮤니티 8.4, Gincó khả năng hoãn lại nhiều điều này làm việc bằng cách chèn các bộ dữ liệu mới vào một danh sách tạm thời, chưa được phân loại Các mục đang chờ xử lý. Khi bàn được hút bụi, hoặc nếu đang chờ xử lý Danh sách trở nên quá lớn (lớn hơnwork_mem), The Các mục được chuyển sang chínhGinCấu trúc dữ liệu sử dụng cùng một số lượng lớn Kỹ thuật chèn được sử dụng trong quá trình tạo chỉ số ban đầu. Cái này cải thiện rất nhiềuGinINDEX Tốc độ cập nhật, thậm chí đếm chi phí chân không bổ sung. Ngoài ra, chi phí có thể được thực hiện bằng một quy trình nền Thay vì xử lý truy vấn tiền cảnh.

Nhược điểm chính của phương pháp này là các tìm kiếm phải quét danh sách các mục đang chờ xử lý ngoài việc tìm kiếm Chỉ số thông thường, và do đó, một danh sách lớn các mục đang chờ xử lý sẽ chậm tìm kiếm đáng kể. Một bất lợi khác là, trong khi Hầu hết các bản cập nhật đều nhanh, một bản cập nhật gây ra danh sách đang chờ xử lý trở thành"Quá lớn"Sẽ phải chịu một chu kỳ dọn dẹp ngay lập tức và do đó chậm hơn nhiều so với các chu kỳ khác cập nhật. Sử dụng đúng cách của Autovacuum có thể giảm thiểu cả hai vấn đề.

Nếu thời gian phản hồi nhất quán quan trọng hơn cập nhật Tốc độ, sử dụng các mục đang chờ xử lý có thể bị vô hiệu hóa bằng cách tắt TheFastupdateTham số lưu trữ cho AGinINDEX. Nhìn thấyTạo chỉ mụcĐể biết chi tiết.

52.3.2. Thuật toán kết hợp một phần

Gin có thể hỗ trợ"Kết hợp một phần"Truy vấn, trong đó truy vấn không xác định một kết quả phù hợp chính xác cho một hoặc nhiều phím, nhưng các trận đấu có thể xảy ra trong một Phạm vi hẹp hợp lý của các giá trị chính (trong phân loại khóa thứ tự được xác định bởiso sánhPhương pháp hỗ trợ). TheTrích xuấtPhương thức, thay vì trả về giá trị khóa để phù hợp chính xác, Trả về một giá trị khóa là giới hạn dưới của phạm vi đã tìm kiếm và đặtpmatchcờ ĐÚNG VẬY. Phạm vi khóa sau đó được tìm kiếm bằngSo sánhpartialPhương pháp.so sánhspartialPhải trả về Zero cho một thực tế khớp, ít hơn 0 cho một không phù hợp vẫn còn trong phạm vi sẽ được tìm kiếm hoặc lớn hơn 0 nếu khóa chỉ mục là qua phạm vi có thể khớp.