Hibernate + SQL 服务器:一个事务阻塞所有其他事务
Hibernate + SQL Server: One Transaction blocks all other transactions
我正在使用 Spring + Hibernate + SQL-Server 开发一个服务器应用程序,我发现我所有的事务都在阻塞其他事务,即使其他事务没有触及相同的 tables / rows 和这个 tables.
之间没有关系
截图如下:
Transaction Report
截图显示tableA上的删除语句阻塞了tableB上的select语句。但是table之间没有任何关系。
在我的理解中,一个事务应该只锁定一个 table 或行,而另一个将命中锁定的 table 或行的事务将被阻止。
但为什么所有交易都被阻止了?
我有什么误解吗?
找到解决方案:
该进程是一个复制进程。一开始我全程开了一个事务,在这个过程中复制了n个对象。当我需要在复制时进行选择时,选择被阻止。所以我决定每次复制一个对象时都打开一个事务,然后在复制过程中关闭这个对象的事务。所以选择不再被阻止。这个设计就像Windows中的copy-process。如果您决定取消复制过程,已复制的文件将保留。就像我的情况一样,已经复制的对象将保留,因为事务已关闭并分别为每个对象提交。
我正在使用 Spring + Hibernate + SQL-Server 开发一个服务器应用程序,我发现我所有的事务都在阻塞其他事务,即使其他事务没有触及相同的 tables / rows 和这个 tables.
之间没有关系截图如下:
Transaction Report
截图显示tableA上的删除语句阻塞了tableB上的select语句。但是table之间没有任何关系。 在我的理解中,一个事务应该只锁定一个 table 或行,而另一个将命中锁定的 table 或行的事务将被阻止。 但为什么所有交易都被阻止了? 我有什么误解吗?
找到解决方案:
该进程是一个复制进程。一开始我全程开了一个事务,在这个过程中复制了n个对象。当我需要在复制时进行选择时,选择被阻止。所以我决定每次复制一个对象时都打开一个事务,然后在复制过程中关闭这个对象的事务。所以选择不再被阻止。这个设计就像Windows中的copy-process。如果您决定取消复制过程,已复制的文件将保留。就像我的情况一样,已经复制的对象将保留,因为事务已关闭并分别为每个对象提交。