sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - hur kör man VACUUM från kod utanför transaktionsblocket?

Efter mer sökning har jag upptäckt egenskapen isolation_level för anslutningsobjektet psycopg2. Det visar sig att ändra detta till 0 kommer att flytta dig ut ur ett transaktionsblock. Att ändra vakuummetoden för ovanstående klass till följande löser det. Observera att jag också ställer tillbaka isoleringsnivån till vad den tidigare var för säkerhets skull (verkar vara 1 som standard).

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)

Den här artikeln (nära slutet på den sidan) ger en kort förklaring av isoleringsnivåer i detta sammanhang.



  1. Hur kan jag validera data före infogning/uppdatering med SQL Server?

  2. Få antalet rader som matchas av UPDATE-fråga med PHP mysqli

  3. Importera med MySQL WorkBench... error ERROR 1046 (3D000)

  4. Filtrera MySQL-data i PHP för att bara visa data från den aktuella sessionens användare?