sql >> Database >  >> RDS >> PostgreSQL

Het laten vallen van een index met psycopg2 wordt van kracht voor of na de commit?

commit verbindt gewoon elke lopende transactie in uw database.

Wat u eigenlijk vraagt ​​of het laten vallen van indexen en vervolgens kopiëren binnen dezelfde transactie dezelfde snelheid oplevert als het eerst laten vallen van indexen in één transactie en vervolgens het kopiëren van gegevens in een nieuwe transactie.

Het directe citaat van docs zegt dat:

Het vetgedrukte gedeelte vertelt indirect dat je moet committen nadat je de indexen hebt verwijderd, omdat het laten vallen van indexen zonder te committen (de transactie voltooien) geen enkele invloed zou moeten hebben op andere gebruikers van de database.

Dus de oplossing zou zoiets moeten zijn:

laat je indexen vallen, commit, kopieer de gegevens, maak nieuwe indexen en commit opnieuw.

Merk op dat wanneer u uw transactie in twee transacties splitst, u de atomiciteit verliest. D.w.z. het is mogelijk dat uw indexen worden verwijderd, maar er worden geen gegevens gekopieerd (als de stroom of het netwerk bijvoorbeeld wegvalt tijdens de kopieertransactie) en de indexen zouden nooit opnieuw worden gemaakt.




  1. MySQL krijgt rijpositie in ORDER BY

  2. Geparametriseerde query:controleer of het veld in een reeks waarden in de SELECT-instructie staat

  3. Isql gebruiken met een Connection String

  4. Is "Waar IN" met meerdere kolommen gedefinieerd in Standard SQL?