在TokuDB 7.5上,我有每批约1000条记录的并发批量插入 . 每个批次更新都在一个事务中完成 . 该表还包含大约1亿条记录 .
问题是它会不时抛出以下异常 .
java.sql.BatchUpdateException:超出锁定等待超时;尝试重新启动事务
使用的事务隔离级别是Repeatable_Read,我在一篇文章中读到,使用Repeatable_Read将导致SELECT查询的间隙锁定 .
但目前我们只有INSERTS .
此锁定超时是否可能是由于间隙锁定,如果是这样,并发INSERTS如何受到间隙锁定的影响?
The schema
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`)
)