sql >> Databáze >  >> RDS >> PostgreSQL

Testovací skript pro souběžnost transakcí pro postgresql

Můžete si to doma uvařit pomocí LOCK na stole, nastavení transakcí a poté uvolnění zámku vrácením transakce, která zámek získala. Viz tuto předchozí odpověď a jeho odkazy pro podrobnosti o tomto přístupu. Zatímco jsem to demonstroval pomocí tří psql sessions je stejně životaschopné to udělat pomocí bash co-processes, skriptu Python pomocí psycopg2 a multiprocessing nebo vláknění moduly atd. Poměrně jednoduché. Aktualizovat :Ve skutečnosti zde je příklad, který jsem právě napsal v pythonu3 .

Pro sofistikovanější testy si vezměte zdrojový kód PostgreSQL a použijte nástroj "isolationtester" v src/test/isolation což vám umožní psát recepty, které provádějí složité řazení příkazů. Nepodporuje vytváření pomocí PGXS (i když přidat takovou podporu by pravděpodobně bylo docela triviální), takže musíte zkompilovat celý zdrojový strom PostgreSQL, ale to je dostatečně rychlé. Poběží proti vašemu stávajícímu PostgreSQL, takže není třeba instalovat ten, který jste zkompilovali.

Viz src/test/isolation/README pro více informací o nástroji pro testování izolace. Dokumenty jsou na zemi trochu tenké, protože se jedná o interní testovací nástroj, ale stávající testovací případy by vám měly pomoci začít. Neváhejte jej vylepšit, aby vyhovoval vašim potřebám, a odešlete patche :)




  1. Srovnávání mnoha PostgreSQL dotazů

  2. MySQL je velmi pomalé pro dotaz na změnu tabulky

  3. Uživatel s možností udělení nemůže udělit vytvoření uživatele

  4. Vnořené transakce v postgresql 8.2?