处理jdbc锁异常

时间:2018-01-26 22:06:00

标签: java sql-server multithreading jdbc h2db

对于不同的数据库技术,MS-SQL和H2最近,甚至在不同的应用程序中,我从无法获取表锁的语句中获得异常。

当从许多并行线程访问同一个表时,会发生这种情况。假设这些冲突原则上无法通过复杂的语句和足够的并行线程来避免,那么处理这些失败语句的好方法是什么?

  • MS-SQL异常明确建议重试该语句。
  • H2允许设置LOCK_TIMEOUT。

由于每个语句都可能以这种方式失败,因此软件中的每个语句都需要重试。好像需要添加许多样板代码。

相反,超时是一个简单的配置,但它需要过高才能保证多个线程不会再次触发异常。这让我回到了重试逻辑。

遗留代码包含几十个语句,每个语句都以自己的方法实现,打开/关闭连接/语句/结果集的三元组。除了将它们包装成重试循环之外,重构它的好方法是什么?较低的性能是可以接受的,但没有失败的陈述。

0 个答案:

没有答案