3

我想在 PostgreSQL 中测试一些事务并发的变体,为此我需要一个脚本来强制两个事务同时开始。不需要人工干预的东西;)有什么想法吗?

4

1 回答 1

2

您可以通过LOCK在桌子上使用 a 来自制这个,设置您的事务,然后通过回滚获得锁的事务来释放锁。有关此方法的详细信息,请参阅此先前的答案及其链接。虽然我使用三个会话来演示它,但使用 bash 协同进程、使用和or模块psql的 Python 脚本等同样可行。做起来相当简单。更新:事实上,这是我刚刚在 python3 中编写的一个示例psycopg2multiprocessingthreading

对于更复杂的测试,获取 PostgreSQL 源代码并使用“isolationtester”工具src/test/isolation,您可以在其中编写执行复杂命令排序的配方。它不支持构建PGXS(尽管添加这样的支持可能很简单)所以你必须编译整个 PostgreSQL 源代码树,但这已经足够快了。它将针对您现有的 PostgreSQL 运行,因此无需安装您编译的那个。

有关src/test/isolation/README隔离测试器工具的更多信息,请参阅。由于它是一个内部测试工具,因此文档有点薄,但现有的测试用例应该可以帮助您入门。随意改进它以满足您的需求并提交补丁:)

于 2013-06-12T00:21:54.590 回答