Các chỉ số GIN Postgres có cần được xây dựng lại định kỳ không?


7

Họ có bị cồng kềnh như chỉ số btree không? Nếu vậy, làm thế nào có thể đo được sự phình to, ví dụ bằng một kịch bản reindexing tự động. Tôi quan tâm đến việc cải thiện hiệu suất truy vấn và tiết kiệm không gian.

Câu trả lời:


3

Theo kinh nghiệm, tôi đã tìm thấy các chỉ mục GIN cần được lập chỉ mục lại sau khi tôi đã chèn một số lượng lớn các hàng vào bảng.

Tôi đã có một bảng có 15 triệu hàng có chỉ số GIN cho phép tôi thực hiện tìm kiếm từ khóa trong vòng 3 giây. Sau khi tôi chèn thêm một triệu hàng, tìm kiếm tương tự mất 30 giây. Tôi đã đợi một ngày sau khi chèn, nhưng tìm kiếm vẫn chậm, vì vậy tôi đã chạy thủ công REINDEXchỉ số GIN của mình, mất hơn một giờ, nhưng sau đó, tìm kiếm của tôi đã lùi lại 3 giây.


2

Các chỉ mục GIN được xây dựng bằng cây B, nhưng có cấu trúc khác.

"Tiềm năng phình to trong các chỉ mục không phải cây B chưa được nghiên cứu kỹ. Nên theo dõi định kỳ kích thước vật lý của chỉ số khi sử dụng bất kỳ loại chỉ mục không phải cây B nào."

Xem thêm tại: Reindex thường xuyên


1
Ý bạn là " không được xây dựng"?
ypercubeᵀᴹ

0

Vâng, nó phụ thuộc một chút vào trường hợp sử dụng. Việc sử dụng lại các con trỏ vật phẩm trong GIN chắc chắn khó hơn rất nhiều so với btree vì cấu trúc hoàn toàn khác nhau ở cấp độ con trỏ vật phẩm. Với cấu trúc GIN mới, cuộc sống trở nên khó dự đoán hơn, vì vậy tôi sẽ theo dõi chặt chẽ về nó - tùy thuộc vào cách sử dụng GIN của bạn, REINDEXcó thể cần thiết. Nhưng như đã nêu trước đây - bằng chứng khó có thể đến đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.