sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - hoe VACUUM uit te voeren vanuit code buiten transactieblok?

Na meer zoeken heb ik de eigenschap isolation_level van het psycopg2-verbindingsobject ontdekt. Het blijkt dat dit veranderen in 0 zal u uit een transactieblokkering halen. Het wijzigen van de vacuümmethode van de bovenstaande klasse naar het volgende lost het op. Merk op dat ik ook het isolatieniveau heb teruggezet naar wat het eerder was voor het geval dat (lijkt 1 te zijn standaard).

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)

Dit artikel (bij het einde op die pagina) geeft een korte uitleg van isolatieniveaus in deze context.



  1. De beste manier om zoekopdrachten van gebruikers in ElasticSearch op te slaan?

  2. SQLiteDatabase-fout, nutteloos logboek

  3. Kan dynamische query niet uitvoeren in opgeslagen procedure tijdens het selecteren van het aantal records

  4. Runtime-berichten afdrukken in postgre