У меня есть приложение Java, которое загружает данные из очень большого текстового файла в MySQL через Hibernate.Пока что приложение работает нормально - данные загружаются.
Затем я хотел отслеживать ход выполнения приложения во время вставки данных, поэтому я написал небольшую утилиту командной строки, которая в основном запрашивает select count(*) from my_table;
.
Первый раз, когда этот запросзапустить (из CLI или MySQL Workbench), я получаю правильное количество записей, как и ожидалось.Все последующие выполнения этого запроса возвращают одно и то же число! Даже если приложение для загрузки данных все еще работает!
Если я остановлю и запустю процесс MySQL, запросим количество записейпоказывает правильный номер, так как приложение для загрузки данных сообщит об этом.
Я никогда не видел ничего подобного раньше.Похоже, что здесь происходит какая-то странная проблема с кэшированием MySQL, и я обеспокоен тем, что это может вызвать проблемы для других не-спящих приложений, которые могут захотеть получить доступ к этой базе данных.
Кто-нибудь знает, как настроить MySQL (или, возможно, Hibernate), чтобы MySQL всегда показывал, что добавляется в базу данных?
Технические подробности:
- MySQL: 5.7.26, в контейнере Docker, с использованием хранилища InnoDB
- Версия Hibernate: 5.4.2.Final
- Версия Spring: 5.1.7.RELEASE