您的当前位置:首页 >系统运维 >MySQL 核心模块—揭秘死锁案例分析插入意向锁 正文

MySQL 核心模块—揭秘死锁案例分析插入意向锁

时间:2025-11-04 21:08:33 来源:网络整理编辑:系统运维

核心提示

1. 准备工作创建测试表:复制CREATE TABLE `t_deadlock_1` ( `id` int NOT NULL AUTO_INCREMENT

1. 准备工作

创建测试表:复制CREATE TABLE `t_deadlock_1` ( `id` int NOT NULL AUTO_INCREMENT,心模析插向锁 `i1` int DEFAULT NULL, `i2` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_i1` (`i1`) ) ENGINE = InnoDB;1.2.3.4.5.6.7.

插入测试数据:

MySQL 核心模块—揭秘死锁案例分析插入意向锁

复制INSERT INTO `t_deadlock_1` (`id`, `i1`, `i2`) VALUE (22, 2, 3), (23, 5, 4), (24, 6, 7);1.2.

把事务隔离级别设置为 REPEATABLE-READ(如已设置,忽略此步骤):

复制SET transaction_isolation = REPEATABLE-READ; -- 确认设置成功 SHOW VARIABLES like transaction_isolation; +-----------------------+-----------------+ | Variable_name | Value | +-----------------------+-----------------+ | transaction_isolation | REPEATABLE-READ | +-----------------------+-----------------+1.2.3.4.5.6.7.8.9.

2. 加锁情况

创建 2 个 MySQL 连接,亿华云计算块揭开启 2 个事务,免费信息发布网秘死执行以下 SQL:

复制-- session 1(事务 1) BEGIN; DELETE FROM t_deadlock_1 WHERE `i1` = 5; -- session 2(事务 2) BEGIN; DELETE FROM t_deadlock_1 WHERE `i1` = 5;1.2.3.4.5.

在 session 1 中执行以下 select 语句查看加锁情况:

复制select engine_transaction_id,锁案 object_name, index_name, lock_type, lock_mode, lock_status, lock_data from performance_schema.data_locks where object_name = t_deadlock_1 and lock_type = RECORD\G

IT技术网