我们有一个将数据存储在本地H2数据库中的应用程序(文件模式)。除了在应用程序关闭时执行的单个查询之外,其他所有功能都正常运行。该查询将发给H2,但从不返回(不会引发异常)。
据我所知,它仅出现在单个工作站上(该功能仍处于测试中而不是生产中)。
在我自己的工作站上使用该工作站的数据库时,应用程序将在那里停止,等待查询返回。因此,使用此特定数据库,它是可重现的。
在外部工具(如果需要的话 DbVisualizer Pro )中打开数据库并发出相同的查询(特别是我用explain analyze <query>
来不修改数据库中的数据)时,查询也将永远运行。查询如下:
DELETE TOP(1000) FROM my_schema.SOMETABLE ST WHERE ST.someDate < '2019-05-23'
该问题并不与显示的日期直接相关,就像昨天发生的一样(日期为2019-05-22
)。
奇怪的是,当我停止执行查询并修改日期时,查询将按预期运行(也使用explain analyze
,因此不修改任何数据)。如果我切换回原始日期,它也可以正常工作。
在执行“技巧”之后,启动应用程序时,所涉及的查询就像一个超级按钮一样工作。因此,我想它一定与特定数据库的实际状态有关。
我的问题是:如何找出数据库文件出了什么问题?
我已经尝试过"health check",但这并没有发现问题。
旁注:“永远运行”表示我在等待大约20分钟后就终止了应用程序进程,但我想时间应该足以删除该特定表中的18个条目中的16个。