Параллельные вставки TokuDB вызывают тайм-ауты блокировки
У меня есть параллельные пакетные вставки с около 1000 записей на пакет, на TokuDB 7.5. Каждое пакетное обновление выполняется в рамках одной транзакции. Таблица также содержит около 100 миллионов записей.
Проблема в том, что время от времени выдается следующее исключение.
java.sql.BatchUpdateException: превышено время ожидания блокировки; попробуйте перезапустить транзакцию
Используемый уровень изоляции транзакции - Repeatable_Read, и я прочитал в статье, что использование Repeatable_Read приведет к блокировке пробелов для запросов SELECT.
Но на данный момент у нас есть только ВСТАВКИ.
Может ли этот тайм-аут блокироваться из-за блокировок гэпа, и если да, то как параллельные ВСТАВКИ влияют на блокировки гэпа?
Схема
CREATE TABLE `message` (
`id` BIGINT(20) UNSIGNED PRIMARY KEY AUTO_INCREMENT,
`message_id` VARCHAR(255) NOT NULL,
`sent_time` TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
`type_id` TINYINT(4) NOT NULL,
`correlation_id` BIGINT(20) NOT NULL,
`origination_address` VARCHAR(16) NOT NULL,
`destination_address` VARCHAR(16) NOT NULL,
`created_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
UNIQUE KEY (`message_id`,`sent_time`, `type_id`, `correlation_id`),
KEY `OA` (`origination_address`),
KEY `DA` (`destination_address`)
)