Зависание базы данных H2 по конкретному запросу - PullRequest
0 голосов
/ 23 мая 2019

У нас есть приложение, хранящее данные в локальной базе данных 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, поэтому данные не изменяются).Если я вернусь к исходной дате, она тоже будет работать.

Когда после этого «трюка» я запускаю приложение, рассматриваемый запрос работает как чудо.Так что я думаю, что это как-то связано с фактическим состоянием конкретной базы данных.

Мой вопрос: Как узнать, что не так с файлом базы данных?

Я уже пытался сделать это «проверка работоспособности» , но это не выявило проблем.

Примечание: «Запуск навсегда» здесь означает, что я остановил процесс приложения после ожидания некоторых20 минут, но я полагаю, что времени будет достаточно для удаления 16 из 18 записей в этой конкретной таблице.

...