PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để tìm ra các chỉ mục bị phân mảnh và chống phân mảnh chúng trong PostgreSQL?

Thông thường bạn không phải lo lắng về điều đó.

Tuy nhiên, nếu đã có một lần cập nhật hoặc xóa hàng loạt hoặc tốc độ thay đổi liên tục cao đến mức autovacuum không thể theo kịp, bạn có thể kết thúc với một chỉ mục quá tải.

Công cụ để xác định id đó là pgstattuple phần mở rộng:

CREATE EXTENSION pgstattuple;

Sau đó, bạn có thể kiểm tra chỉ mục phình to như thế này:

SELECT * FROM pgstatindex('spatial_ref_sys_pkey');

-[ RECORD 1 ]------+-------
version            | 2
tree_level         | 1
index_size         | 196608
root_block_no      | 3
internal_pages     | 1
leaf_pages         | 22
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 64.48
leaf_fragmentation | 13.64

Chỉ số này ở dạng tuyệt vời (chưa bao giờ được sử dụng):Chỉ có 14% độ phồng.

Lưu ý rằng các chỉ mục được tạo theo mặc định bằng fillfactor 90, nghĩa là, các khối chỉ mục không được lấp đầy hơn 90% bởi INSERT .

Thật khó để nói khi nào một chỉ mục bị cồng kềnh, nhưng nếu leaf_fragmentation vượt quá 50-60, nó không quá đẹp.

Để tổ chức lại một chỉ mục, hãy sử dụng REINDEX .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cao nhất mỗi nhóm

  2. Google Cloud SQL - Bộ nhớ Postgresql tiếp tục tăng

  3. Làm cách nào để xóa một trong hai dòng dữ liệu trùng lặp của tôi trong Postgres?

  4. Xây dựng hình ảnh trung tâm docker keycloak trong openshift từ lệnh ứng dụng mới

  5. Không thể kết nối với máy chủ PostgreSQL