【问题标题】:Hibernate with MS SQL Server 2012 issue with table locks and parallel query休眠与 MS SQL Server 2012 表锁和并行查询问题
【发布时间】:2015-03-21 21:55:33
【问题描述】:

我有一个 java 线程来更新事务中的几个表,还有另一个线程读取具有只读事务的表。读取表的线程正在等待并且不重新调整结果,并且仅在其他线程完成更新后才返回。

如果 DB 是 mysql,其中更新和查询确实并行发生并且没有等待,情况就不同了。我是否在 MS SQL 方面遗漏了一些东西。需要做什么才能使其平行。这是因为 MS Sql Server 中的表锁而发生的。

MS Sql 服务器休眠设置:

db.driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDataSource

db.dialect = org.hibernate.dialect.SQLServer2008Dialect

休眠版本:v4.3.6.Final

连接池:HikariCP-java6 - v2.2.5

【问题讨论】:

    标签: sql-server multithreading hibernate table-locking


    【解决方案1】:

    T-SQL你可以使用UNLOCK命令,在this link你可以看到它的完整描述。您也可以在从表格中选择时使用WITH (NOLOCK)

    SELECT *
    FROM sample_table WITH (NOLOCK)
    WHERE --conditions
    

    但是在 HibernateMS SQL Server 中我真的不知道如何实现 NOLOCK 如果你找到解决方案告诉我们我会遵循这个问题。

    【讨论】:

    • 感谢您的回复。我还没有想出解决办法。我可能会通过敲击休眠并使用 jdbc 模板进行更新来使用您的解决方案
    • 不客气,希望您能尽快解决问题。祝你好运。
    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多