PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Тестови скрипт за едновременност на транзакции за postgresql

Можете да направите това домашно, като вземете LOCK на маса, настройване на вашите транзакции, след което освобождаване на заключването чрез връщане назад на транзакцията, която е получила заключването. Вижте този предишен отговор и неговите връзки за подробности относно този подход. Докато го демонстрирах с помощта на три psql сесии е еднакво жизнеспособно да го направите с bash съвместни процеси, Python скрипт, използващ psycopg2 и многопроцесорната обработка или threading модули и т.н. Доста лесно се прави. Актуализиране :Всъщност ето един пример, който току-що написах в python3 .

За по-сложни тестове вземете изходния код на PostgreSQL и използвайте инструмента "isolationtester" в src/test/isolation което ви позволява да пишете рецепти, които изпълняват сложни подреждания на команди. Не поддържа изграждане с PGXS (въпреки че добавянето на такава поддръжка вероятно ще бъде доста тривиално), така че трябва да компилирате цялото дърво на изходния код на PostgreSQL, но това е достатъчно бързо. Той ще работи срещу вашия съществуващ PostgreSQL, така че няма нужда да инсталирате този, който сте компилирали.

Вижте src/test/isolation/README за повече информация относно инструмента isolationtester. Документите са малко тънки на земята, тъй като това е инструмент за вътрешно тестване, но съществуващите случаи на тестове трябва да ви помогнат да започнете. Чувствайте се свободни да го подобрите, за да отговаря на вашите нужди и да изпращате корекции :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Управление на връзката в PostgreSQL:Ръководство

  2. Как да използвате flyway за мигриране на данни от една DB към друга DB?

  3. Как да мигрирам атрибут на модел на ActiveRecord от json към jsonb?

  4. Генерирайте sql с подзаявка като колона в оператор select с помощта на SQLAlchemy

  5. Използване на заявка за хибернация:двоеточие се третира като параметър / избягващо двоеточие