PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Script de test pour la concurrence des transactions pour postgresql

Vous pouvez homebrew ceci en prenant un LOCK sur une table, en configurant vos transactions, puis en libérant le verrou en annulant la transaction qui a obtenu le verrou. Voir cette réponse précédente et ses liens pour plus de détails sur cette approche. Alors que je l'ai démontré en utilisant trois psql sessions, il est également viable de le faire avec des co-processus bash, un script Python utilisant psycopg2 et le multiprocessing ou threading modules, etc. Assez simple à faire. Mettre à jour :En fait voici un exemple que je viens d'écrire en python3 .

Pour des tests plus sophistiqués, récupérez le code source PostgreSQL et utilisez l'outil "isolationtester" dans src/test/isolation qui vous permet d'écrire des recettes qui effectuent des commandes complexes de commandes. Il ne prend pas en charge la construction avec PGXS (bien qu'un tel support serait probablement assez simple à ajouter) vous devez donc compiler l'ensemble de l'arbre source de PostgreSQL, mais c'est assez rapide. Il s'exécutera sur votre PostgreSQL existant, il n'est donc pas nécessaire d'installer celui que vous avez compilé.

Voir src/test/isolation/README pour en savoir plus sur l'outil isolationtester. La documentation est un peu mince sur le terrain puisqu'il s'agit d'un outil de test interne, mais les cas de test existants devraient vous aider à démarrer. N'hésitez pas à l'améliorer pour répondre à vos besoins et soumettre des correctifs :)