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

Apa opsi yang tersedia untuk mengidentifikasi dan menghapus objek yang tidak valid di Postgres (mis:indeks rusak)

Jika Anda merujuk untuk mendeteksi indeks "tidak valid" (dibuat dengan buruk), tampaknya Postgres dapat "gagal" dalam upaya membuat indeks, dan kemudian perencana kueri tidak akan menggunakannya, meskipun ada di sistem Anda. Kueri ini akan mendeteksi indeks "gagal":

https://www.enterprisedb.com/blog/pgupgrade -bug-invalid-concurrently-created-indexes

SELECT n.nspname, c.relname
FROM   pg_catalog.pg_class c, pg_catalog.pg_namespace n,
       pg_catalog.pg_index i
WHERE  (i.indisvalid = false OR i.indisready = false) AND
       i.indexrelid = c.oid AND c.relnamespace = n.oid AND
       n.nspname != 'pg_catalog' AND
       n.nspname != 'information_schema' AND
       n.nspname != 'pg_toast'

meskipun saya kira mendeteksi indeks tabel TOAST tidak ada salahnya, jadi Anda dapat menghapus bagian kueri itu :)

Terkait, bagi saya terkadang hanya menjalankan ANALYZE baru di atas meja juga membuat indeks tiba-tiba mulai digunakan dalam produksi (yaitu bahkan jika indeks tidak "tidak valid" mereka mungkin tidak digunakan sampai ANALYZE berjalan). Aneh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cari data jsonb multidimensi di laravel postgres

  2. Perbarui beberapa kolom dalam fungsi pemicu di plpgsql

  3. Laravel 5 + PostgreSQL:Basis data [postgres] tidak dikonfigurasi. Kesalahan

  4. Bagaimana cara mendapatkan perintah postgres 'nth_value' yang setara di pyspark Hive SQL?

  5. Indeks unik PostgreSQL dan kasus string