并发性 – 如何测试数据库中的竞争条件?

我尝试编写数据库代码以确保它不受竞争条件的影响,以确保我已锁定正确的行或表.但我经常想知道:我的代码是否正确?是否有可能强制显示任何现有的竞争条件?我想确保如果它们确实发生在生产环境中,我的应用程序将做正确的事情.

我一般都知道哪个并发查询可能会导致问题,但我不知道如何强制它们并发运行以查看是否发生了正确的行为(例如我使用了正确的锁定类型),正确的错误是抛出等

注意:我使用的是Postgresql和Perl,所以如果一般不能回答这个问题,那么它应该会被重新标记.

更新:如果解决方案是程序化的,我更喜欢它.这样我就可以编写自动化测试来确保没有回归.

解决方法

我一直用我的T-sql模块做这件事.

基本上,您需要做的就是在一个循环中从两个或多个连接运行模块几分钟.通常,假设您的sql Server盒具有不错的cpu,所有潜在的问题都会在几分钟内暴露出来.

我写了几个例子herehere.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...