xen*_*ide 32 testing concurrency
我尝试编写数据库代码以确保它不受竞争条件的影响,以确保我锁定了正确的行或表。但我经常想:我的代码正确吗?是否有可能强制任何现有的竞争条件出现?我想确保如果它们确实发生在生产环境中,我的应用程序会做正确的事情。
我通常确切地知道哪个并发查询可能会导致问题,但我不知道如何强制它们并发运行以查看是否发生了正确的行为(例如,我使用了正确类型的锁),正确的错误是抛出等。
注意:我使用 PostgreSQL 和 Perl,所以如果这不能被一般地回答,它可能应该被重新标记。
更新:如果解决方案是程序化的,我更喜欢它。这样我就可以编写自动化测试来确保没有回归。
我通常使用 RDBMS 的命令行工具,只启动 2 个(或更多)CLI 实例。然后,您可以将应用程序层发送的 SQL 语句作为一场比赛(看起来像动作角色扮演游戏)逐条重放。您应该试验/感受锁定系统的运行情况,因为您的 CLI 将“挂起”一点,等待其他 CLI 释放锁定。
如果这听起来很清楚,请毫不犹豫地说出来;-)