PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mengetahui indeks yang terfragmentasi dan mendefragnya di PostgreSQL?

Biasanya Anda tidak perlu khawatir tentang itu sama sekali.

Namun, jika ada penghapusan atau pembaruan massal, atau tingkat perubahan berkelanjutan sangat tinggi sehingga autovacuum tidak dapat mengikuti, Anda mungkin akan mengalami indeks yang membengkak parah.

Alat untuk menentukan id itu pgstattuple ekstensi:

CREATE EXTENSION pgstattuple;

Kemudian Anda dapat memeriksa index bloat seperti ini:

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

Indeks ini dalam kondisi sangat baik (tidak pernah digunakan):Hanya memiliki 14% kembung.

Ingatlah bahwa indeks secara default dibuat dengan fillfactor dari 90, yaitu, blok indeks tidak diisi lebih dari 90% oleh INSERT .

Sulit untuk mengatakan kapan indeks membengkak, tetapi jika leaf_fragmentation melebihi 50-60, itu tidak terlalu cantik.

Untuk mengatur ulang indeks, gunakan 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. Bagaimana cara terhubung ke database Postgres di Docker di Windows 10 menggunakan SQLAlchemy?

  2. Bagaimana sql dengan pernyataan rekursif ditafsirkan?

  3. Menemukan string serupa dengan PostgreSQL dengan cepat

  4. Menginstal psycopg2 (postgresql) di virtualenv di windows

  5. Permintaan Django dengan order_by, berbeda dan batas pada Postgresql