我有一个繁忙的事务性SQL Server (2012),它在阻塞方面有间歇性问题(每隔几天左右)。我一直在使用扩展事件来捕获阻塞的进程报告,但是这些显示阻塞进程似乎是空闲的,输入缓冲区是use [_dummy]。连接到此服务器的应用程序使用多个数据库,因此_dummy是一个空白数据库,连接池打开连接到的连接;数据库上下文是根据需要切换的。我认为正在发生的<
在我们的应用程序中,我们偶尔会在几分钟内向Neo4J图添加大约10,000个节点和100,000个关系,然后在几分钟后将其中许多节点添加到DETACH DELETE中。以前,delete查询非常快(<100 at ),但是在对数据模型和其他一些查询(这些查询当时没有运行)做了小改动之后,它现在常常在完成之前阻塞几分钟。当这个阻塞发生时,没有其他查询在运行,我有一个来自Halin的导出,显示当时正在发生的所有事务。这里很难重现,但总之,有两个<em
,但是这个事务2被阻塞了。如果我执行update child set id = id+10 where id = 102;(事务3),并且表中不存在行id = 102,事务3将不会被阻塞,并且可以成功地执行。就我而言,MySQL8.0 gap锁只锁定id大于1000的行,但在第二个事务中,行id为101,而不大于1000,因此这两个事务不会相互冲突。那么,为什么事务二被事务一<em