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

Postgres:polecenie odkurzania nie czyści martwych krotek

Użyj VACUUM (VERBOSE) aby uzyskać szczegółowe statystyki tego, co robi i dlaczego.

Istnieją trzy powody, dla których nie można usunąć martwych krotek:

  1. Istnieje długo trwająca transakcja, która nie została zamknięta. Złych chłopców możesz znaleźć za pomocą

    SELECT pid, datname, usename, state, backend_xmin
    FROM pg_stat_activity
    WHERE backend_xmin IS NOT NULL
    ORDER BY age(backend_xmin) DESC;
    

    Możesz pozbyć się transakcji za pomocą pg_cancel_backend() lub pg_terminate_backend() .

  2. Są przygotowane transakcje, które nie zostały zrealizowane. Możesz je znaleźć za pomocą

    SELECT gid, prepared, owner, database, transaction
    FROM pg_prepared_xacts
    ORDER BY age(transaction) DESC;
    

    Użytkownik COMMIT PREPARED lub ROLLBACK PREPARED aby je zamknąć.

  3. Istnieją gniazda replikacji, które nie są używane. Znajdź je za pomocą

    SELECT slot_name, slot_type, database, xmin
    FROM pg_replication_slots
    ORDER BY age(xmin) DESC;
    

    Użyj pg_drop_replication_slot() aby usunąć nieużywane gniazdo replikacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można wykonać rekurencyjne zapytanie SQL?

  2. Wybierz kolumny z określonymi nazwami kolumn w PostgreSQL

  3. Jak mogę scalić kolumny z dwóch tabel w jedno wyjście?

  4. Jak zresetować domyślne hasło użytkownika postgresql 9.2 (zwykle „postgres”) w systemie Mac OS x 10.8.2?

  5. Jak działa funkcja Scale() w PostgreSQL