Можете да направите това домашно, като вземете LOCK
на маса, настройване на вашите транзакции, след което освобождаване на заключването чрез връщане назад на транзакцията, която е получила заключването. Вижте този предишен отговор
и неговите връзки за подробности относно този подход. Докато го демонстрирах с помощта на три psql
сесии е еднакво жизнеспособно да го направите с bash съвместни процеси, Python скрипт, използващ psycopg2
и многопроцесорната обработка
или threading
модули и т.н. Доста лесно се прави. Актуализиране :Всъщност ето един пример, който току-що написах в python3 .
За по-сложни тестове вземете изходния код на PostgreSQL и използвайте инструмента "isolationtester" в src/test/isolation
което ви позволява да пишете рецепти, които изпълняват сложни подреждания на команди. Не поддържа изграждане с PGXS
(въпреки че добавянето на такава поддръжка вероятно ще бъде доста тривиално), така че трябва да компилирате цялото дърво на изходния код на PostgreSQL, но това е достатъчно бързо. Той ще работи срещу вашия съществуващ PostgreSQL, така че няма нужда да инсталирате този, който сте компилирали.
Вижте src/test/isolation/READMEкод>
за повече информация относно инструмента isolationtester. Документите са малко тънки на земята, тъй като това е инструмент за вътрешно тестване, но съществуващите случаи на тестове трябва да ви помогнат да започнете. Чувствайте се свободни да го подобрите, за да отговаря на вашите нужди и да изпращате корекции :)