我有一个java线程,它在事务中更新了几个表,还有另一个线程用只读事务读取表。读取表的线程正在等待,而不是重新调整结果,只有在另一个线程完成更新后才返回。
如果DB是mysql,并且更新和查询并行发生并且没有等待,则情况不同。我在MS SQL方面遗漏了什么。需要做些什么才能使其平行。这是因为MS Sql Server中的表锁而发生的。
MS Sql server休眠设置:
db.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDataSource
db.dialect = org.hibernate.dialect.SQLServer2008Dialect
Hibernate版本: v4.3.6.Final
连接池: HikariCP-java6 - v2.2.5
答案 0 :(得分:1)
在 T-SQL 中,您可以使用UNLOCK
命令,在this link中,您可以看到它的完整说明。您也可以在从表格中选择时使用WITH (NOLOCK)
:
SELECT *
FROM sample_table WITH (NOLOCK)
WHERE --conditions
但是在 Hibernate 中使用 MS SQL Server 我真的不知道如何找到解决方法{@ 1}}告诉我们我会按照这个问题。