PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jakie są dostępne opcje identyfikacji i usuwania nieprawidłowych obiektów w Postgresie (np. uszkodzone indeksy)

Jeśli masz na myśli wykrywanie „nieprawidłowych” (źle utworzonych) indeksów, najwyraźniej Postgres może „nie powieść się” przy próbie utworzenia indeksu, a wtedy planer zapytań nie będzie ich używał, chociaż istnieją w twoim systemie. To zapytanie wykryje „nieudane” indeksy:

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'

chociaż przypuszczam, że wykrycie indeksów tabeli TOAST nie zaszkodzi, więc możesz usunąć tę część zapytania :)

Pokrewne, dla mnie czasami samo uruchomienie nowej ANALIZY na tabeli powoduje również, że indeksy nagle zaczynają być używane w produkcji (tj. nawet jeśli indeksy nie są „nieprawidłowe”, mogą być nieużywane do czasu uruchomienia ANALIZY). Dziwne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy func.count w kolumnie logicznej

  2. Log Stacktrace bieżącego interpretera Pythona za pomocą wyzwalacza PostgreSQL

  3. Dostęp zdalny Postgresql brak wpisu pg_hba.conf dla hosta

  4. Jak przekonwertować pole znacznika czasu na int8? A może po prostu upuść kolumnę i utwórz nową?

  5. Prawidłowy sposób użycia NOT IN Postgres