对于不同的数据库技术,MS-SQL和H2最近,甚至在不同的应用程序中,我从无法获取表锁的语句中获得异常。
当从许多并行线程访问同一个表时,会发生这种情况。假设这些冲突原则上无法通过复杂的语句和足够的并行线程来避免,那么处理这些失败语句的好方法是什么?
由于每个语句都可能以这种方式失败,因此软件中的每个语句都需要重试。好像需要添加许多样板代码。
相反,超时是一个简单的配置,但它需要过高才能保证多个线程不会再次触发异常。这让我回到了重试逻辑。
遗留代码包含几十个语句,每个语句都以自己的方法实现,打开/关闭连接/语句/结果集的三元组。除了将它们包装成重试循环之外,重构它的好方法是什么?较低的性能是可以接受的,但没有失败的陈述。