У меня есть поисковый движок по локальным сайтам. У меня есть
LemmaService, который вполняет функции сохранения лемм в базу данных. Однако, сохранение в методе
saveLemmasAndIndexes выполняется около
300 секунд при сохранении лишь
2000 сущностей за раз. Такого быть не должно. + Часто пишутся ошибки-дедлоки, например: 2024-04-28 18:26:38 ERROR jdbc.batch:293 - HHH100501: Exception executing batch [java.sql.BatchUpdateException: Deadlock found when trying to get lock; try restarting transaction], SQL: update lemma set frequency=?,lemma=?,site_id=? where id=?
Я вызываю метод getAndSaveLemmasAndIndexes вызывается из ForkJoinPool после сохранения страниц
Вы можете посмотреть исходный код LemmaService здесь:
https://pastebin.com/dZ4zcWcp
Так же посмотрите
https://pastebin.com/diQSPpw0 - это рекурсивный сайт, расширяющий RecursiveAction, откуда вызывается getAndSaveLemmasAndIndexes (он является точкой входа в LemmaService)
Так же вам может помочь структура базы данных MySql:
https://pastebin.com/N7sT8kbU.
Так же хочу уточнить, что скорость сохранения других сущностей вполне нормальная и дедлоки отсутствуют
Буду безумно благодарен за помощь, уже больше недели вожусь с этим