Параллельные вставки 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`)

)

0 ответов

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