Du kan hembrygga detta genom att ta ett LOCK
på ett bord, ställer in dina transaktioner och släpper sedan låset genom att återställa transaktionen som fick låset. Se det här tidigare svaret
och dess länkar för detaljer om detta tillvägagångssätt. Medan jag demonstrerade det med tre psql
sessioner är det lika lönsamt att göra det med bash co-processer, ett Python-skript som använder psycopg2
och multiprocessing
eller trådning
moduler etc. Ganska enkel att göra. Uppdatera :Faktum är att här är ett exempel jag just skrev i python3 .
För mer sofistikerade tester, ta tag i PostgreSQL-källkoden och använd verktyget "isolationtester" i src/test/isolation
som låter dig skriva recept som gör komplexa beställningar av kommandon. Det stöder inte att byggas med PGXS
(även om sådant stöd förmodligen skulle vara ganska trivialt att lägga till) så du måste kompilera hela PostgreSQL-källkodsträdet, men det är tillräckligt snabbt. Den körs mot din befintliga PostgreSQL så du behöver inte installera den du kompilerade.
Se src/test/isolation/README
för mer om verktyget isolationtester. Dokumenten är lite tunna på marken eftersom det är ett internt testverktyg, men de befintliga testfallen borde hjälpa dig att komma igång. Förbättra den gärna för att möta dina behov och skicka in patchar :)