sql >> Database >  >> RDS >> PostgreSQL

Testscript voor transactie-gelijktijdigheid voor postgresql

Je kunt dit zelf brouwen door een LOCK . te nemen op een tafel, het opzetten van uw transacties en het vrijgeven van de vergrendeling door de transactie die de vergrendeling heeft gekregen terug te draaien. Zie dit eerdere antwoord en de links voor details over deze aanpak. Terwijl ik het demonstreerde met behulp van drie psql sessies is het even goed mogelijk om het te doen met bash co-processen, een Python-script met behulp van psycopg2 en de multiprocessing of threading modules, etc. Redelijk eenvoudig te doen. Bijwerken :In feite hier is een voorbeeld dat ik zojuist in python3 heb geschreven .

Voor meer geavanceerde tests, pak de PostgreSQL-broncode en gebruik de "isolationtester"-tool in src/test/isolation waarmee u recepten kunt schrijven die complexe opdrachten van opdrachten uitvoeren. Het biedt geen ondersteuning voor het bouwen met PGXS (hoewel een dergelijke ondersteuning waarschijnlijk vrij triviaal zou zijn om toe te voegen), dus je moet de hele PostgreSQL-bronstructuur compileren, maar dat is snel genoeg. Het werkt tegen je bestaande PostgreSQL, dus het is niet nodig om degene die je hebt gecompileerd te installeren.

Zie src/test/isolation/README voor meer informatie over de isolationtester-tool. De documenten zijn een beetje dun omdat het een interne testtool is, maar de bestaande testcases zouden u op weg moeten helpen. Voel je vrij om het te verbeteren om aan je behoeften te voldoen en patches in te dienen :)




  1. Over het nut van expressie-indexen

  2. Hoe maak je een 'juiste case'-opmaak van een mysql-kolom?

  3. Alternatief voor het gebruik van het trefwoord LIMIT in een SubQuery in MYSQL

  4. Hoe installeer ik de Python MySQLdb-module met pip?