PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Testskript für Transaktionsparallelität für postgresql

Sie können dies selbst basteln, indem Sie ein LOCK nehmen auf einer Tabelle, richten Sie Ihre Transaktionen ein und geben Sie dann die Sperre frei, indem Sie die Transaktion rückgängig machen, die die Sperre erhalten hat. Siehe diese vorherige Antwort und seine Links für Details zu diesem Ansatz. Während ich es mit drei psql demonstriert habe Sitzungen ist es ebenso möglich, dies mit Bash-Co-Prozessen zu tun, einem Python-Skript, das psycopg2 verwendet und das multiprocessing oder threading Module usw. Ziemlich einfach zu machen. Aktualisieren :Tatsächlich hier ist ein Beispiel, das ich gerade in Python3 geschrieben habe .

Holen Sie sich für ausgefeiltere Tests den PostgreSQL-Quellcode und verwenden Sie das Tool „isolationtester“ in src/test/isolation mit dem Sie Rezepte schreiben können, die komplexe Reihenfolgen von Befehlen ausführen. Es unterstützt nicht die Erstellung mit PGXS (obwohl es wahrscheinlich ziemlich trivial wäre, eine solche Unterstützung hinzuzufügen), also müssen Sie den gesamten PostgreSQL-Quellbaum kompilieren, aber das geht schnell genug. Es wird mit Ihrem vorhandenen PostgreSQL ausgeführt, sodass Sie das von Ihnen kompilierte nicht installieren müssen.

Siehe src/test/isolation/README für mehr über das Isolationstester-Tool. Die Dokumentation ist etwas dürftig, da es sich um ein internes Testtool handelt, aber die vorhandenen Testfälle sollten Ihnen den Einstieg erleichtern. Fühlen Sie sich frei, es zu verbessern, um es Ihren Bedürfnissen anzupassen und Patches einzureichen :)