PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Script de teste para simultaneidade de transação para postgresql


Você pode fazer isso usando um LOCK em uma tabela, configurando suas transações e liberando o bloqueio revertendo a transação que obteve o bloqueio. Veja esta resposta anterior e seus links para detalhes sobre esta abordagem. Enquanto eu demonstrava usando três psql sessões é igualmente viável fazê-lo com co-processos bash, um script Python usando psycopg2 e o multiprocessamento ou threading módulos, etc. Bastante simples de fazer. Atualizar :Na verdade aqui está um exemplo que acabei de escrever em python3 .

Para testes mais sofisticados, pegue o código fonte do PostgreSQL e use a ferramenta "isolationtester" em src/test/isolation que permite escrever receitas que fazem ordenações complexas de comandos. Não suporta ser construído com PGXS (apesar de que tal suporte provavelmente seria bem trivial para adicionar) então você tem que compilar toda a árvore fonte do PostgreSQL, mas isso é rápido o suficiente. Ele será executado em seu PostgreSQL existente, portanto, não há necessidade de instalar o que você compilou.

Consulte src/test/isolation/README para obter mais informações sobre a ferramenta de teste de isolamento. Os documentos são um pouco escassos, pois é uma ferramenta de teste interna, mas os casos de teste existentes devem ajudá-lo a começar. Sinta-se à vontade para melhorá-lo para atender às suas necessidades e enviar patches :)