问题:postgresql的事务并发测试脚本

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

解答

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

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

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

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐