0

TokuDB 7.5で、バッチごとに約1000レコードの同時バッチ挿入があります。各バッチ更新は、1 つのトランザクション内で行われます。このテーブルには、約 1 億件のレコードも含まれています。

問題は、次の例外が時々スローされることです。

java.sql.BatchUpdateException: ロック待機タイムアウトを超えました。トランザクションを再開してみてください

使用されるトランザクション分離レベルは Repeatable_Read であり、記事で Repeatable_Read を使用すると SELECT クエリのギャップ ロックが発生することを読みました。

しかし、現時点では INSERTS しかありません。

このロック タイムアウトはギャップ ロックが原因である可能性がありますか?もしそうなら、同時 INSERTS はギャップ ロックによってどのように影響を受けますか?

スキーマ

 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`)

)

4

0 に答える 0