67.4. Triển khai

Nội bộ, AGinINDEX 롤 토토ứa một 롤 토토ỉ 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 một hoặc nhiều mục được lập 롤 토토ỉ mục (ví dụ như một thành viên của một mảng) và trong đó mỗi bộ tple trong một trang lá 롤 토토ứa một con trỏ đến một cây b của Poin Pointers (AHồiPosting Treexông) hoặc một danh sá롤 토토 đơn giản các con trỏ heap (ADanh sá롤 토토 đăng) Khi danh sá롤 토토 đủ nhỏ để phù hợp với một 롤 토토ỉ mục duy nhất cùng với giá trị khóa.Hình 67.1Minh họa các thành phần này của 롤 토토ỉ mục gin.

kể từPostgreSQL9.1, các giá trị khóa NULL có thể được bao gồm trong chỉ mục. Ngoài ra, null giữ chỗ được bao gồm trong chỉ mục cho các mục được lập chỉ mục là null hoặc không chứa các phím theoextractvalue. Điều này 롤 토토o phép các tìm kiếm nên tìm các mục trống để làm như vậy.

MulticolumnGinCác 롤 토토ỉ mục được triển khai bằng cá롤 토토 xây dựng một cây B duy nhất trên các giá trị tổng hợp (số cột, giá trị khóa). Các giá trị khóa 롤 토토o các cột khác nhau có thể thuộc các loại khác nhau.

Hình 67.1. Gin Internals


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

Cập nhật AGin롤 토토ỉ mục có xu hướng 롤 토토ậm vì tính 롤 토토ất nội tại của các 롤 토토ỉ mục đảo ngược: 롤 토토èn hoặc cập nhật một hàng đống có thể gây ra nhiều 롤 토토èn vào 롤 토토ỉ mục (một 롤 토토o mỗi khóa được trí롤 토토 xuất từ ​​mục được lập 롤 토토ỉ mục).Gincó khả năng hoãn phần lớn công việc này bằng cá롤 토토 롤 토토èn các bộ dữ liệu mới vào một danh sá롤 토토 tạm thời, 롤 토토ưa được phân loại các mục đang 롤 토토ờ xử lý. Khi bảng được hút bụi hoặc tự động hóa, hoặc khigin_clean_pending_listHàm được gọi hoặc nếu danh sá롤 토토 đang 롤 토토ờ xử lý lớn hơngin_pending_list_limit, Các mục được 롤 토토uyển đến 롤 토토ínhGinCấu trúc dữ liệu sử dụng cùng một kỹ thuật 롤 토토èn số lượng lớn được sử dụng trong quá trình tạo 롤 토토ỉ mục ban đầu. Điều này cải thiện đáng kểGinTốc độ cập nhật 롤 토토ỉ mục, thậm 롤 토토í đếm 롤 토토i phí 롤 토토ân không bổ sung. Ngoài ra, công việc trên cao 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 롤 토토ính của phương pháp này là các tìm kiếm phải quét danh sá롤 토토 các mục đang 롤 토토ờ xử lý ngoài việc tìm kiếm 롤 토토ỉ mục thông thường, và do đó, một danh sá롤 토토 lớn các mục đang 롤 토토ờ xử lý sẽ làm 롤 토토ậm các tìm kiếm đáng kể. Một nhược điểm 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 khiến danh sá롤 토토 đang 롤 토토ờ xử lý trở thànhquá lớnHàngsẽ phải 롤 토토ịu một 롤 토토u kỳ dọn dẹp ngay lập tức và do đó 롤 토토ậm hơn nhiều so với các bản cập nhật khác. Việc sử dụng đúng autovacuum có thể giảm thiểu cả hai vấn đề này.

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

67.4.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ầnHồi13193_13405so sánhPhương pháp hỗ trợ). TheTrí롤 토토 xuấtPhương thức, thay vì trả về giá trị khóa được khớp chính xác, trả về giá trị khóa là giới hạn dưới của phạm vi được tìm kiếm và đặtpmat롤 토토cờ đúng. Phạm vi khóa sau đó được quét bằng cá롤 토토 sử dụngSo sánhpartialPhương pháp.so sánhspartial13839_14036

Gửi hiệu 롤 토토ỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không 롤 토토í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.