sql >> Databasteknik >  >> RDS >> PostgreSQL

Testskript för transaktionssamtidighet för postgresql

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 :)




  1. Hur kör man mysql-skript med variabler med PHP::PDO?

  2. Lagra html-enheter i databasen? Eller konvertera när den hämtas?

  3. Psycopg2 gillar inte tabellnamn som börjar med en liten bokstav

  4. Hur testar man om en sträng är JSON eller inte?