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

PostgreSQL - jak spustit VACUUM z kódu mimo transakční blok?

Po dalším hledání jsem objevil vlastnost isolation_level objektu připojení psycopg2. Ukázalo se, že změna na 0 vás přesune z transakčního bloku. Změna vakuové metody výše uvedené třídy na následující to řeší. Všimněte si, že jsem také nastavil úroveň izolace zpět na to, co bylo dříve pro všechny případy (zdá se, že je 1 ve výchozím nastavení).

def vacuum(self):
    old_isolation_level = self.conn.isolation_level
    self.conn.set_isolation_level(0)
    query = "VACUUM FULL"
    self._doQuery(query)
    self.conn.set_isolation_level(old_isolation_level)

Tento článek (na této stránce na konci) poskytuje stručné vysvětlení úrovní izolace v tomto kontextu.



  1. Databáze Oracle 12c Chyba při pokusu o připojení:Síťový adaptér nemohl navázat připojení

  2. Co jsou sekvenční vs. paralelní streamy v Javě?

  3. Obnovení databáze ve WAMP

  4. Aktualizujte tabulku Oracle hodnotami ze souboru CSV