Превышено время ожидания блокировки транзакции NDB CannotAcquireLockException

Я использую кластер MySQL NDB с архитектурой мастер-мастер. Насколько я понимаю, если я буду искать некоторые данные, не основанные на идентификаторах, это затронет все узлы NDB. Если один узел не может получить блокировку из-за того, что строка заблокирована другой транзакцией и истекло время ожидания, я получу исключение "Время ожидания блокировки".

Приложение, которое подключается к этой БД, является стандартной пружинной загрузкой с hibernate (база данных-платформа: org.hibernate.dialect.MySQL5InnoDBDialect database: MYSQL)

Некоторые транзакции доступны только для чтения. Транзакция, выполняющая чтение, подходит для значений до или после (относительно другой транзакции). В соответствии с этим, если я не добавлю "LOCK IN SHARE MODE". это произойдет естественно.

Мой метод аннотирован с помощью: @Transactional(readOnly = true)Есть ли что-то еще, что я должен сделать, чтобы убедиться, что мое приложение просто читает, не ожидая или не блокируя другую транзакцию?

0 ответов

Другие вопросы по тегам