sql >> Databáze >  >> RDS >> PostgreSQL

Jaké jsou dostupné možnosti pro identifikaci a odstranění neplatných objektů v Postgres (např. poškozené indexy)

Pokud máte na mysli detekci „neplatných“ (špatně vytvořených) indexů, Postgres zjevně může „selhat“ při pokusu o vytvoření indexu, a pak je plánovač dotazů nepoužije, ačkoli ve vašem systému existují. Tento dotaz zjistí "neúspěšné" indexy:

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'

i když předpokládám, že detekce indexů tabulky TOAST by neuškodila, takže tuto část dotazu můžete odstranit :)

Související, pro mě někdy jen spuštění nové ANALYZE na tabulce také způsobí, že indexy se náhle začnou používat v produkci (tj. i když indexy nejsou „neplatné“, mohou být nepoužívané, dokud se nespustí ANALYZE). Divné.



  1. Jak seskupit data pole vrácená dotazem na levé spojení v php?

  2. python manage.py migrate neprovádí žádné změny v databázi postgres

  3. Je použití mysqli_real_escape_string dostatečné k zabezpečení mého řetězce dotazu?

  4. PROVEĎTE OKAMŽITĚ v plsql