随笔分类 - MySQL Lock
摘要:测试环境 MySQL版本: 5.7.30 事务级别: READ-COMMITTED 测试数据 mysql> show create table tb1001 \G *************************** 1. row *************************** Table
阅读全文
摘要:测试环境 MySQL版本: 5.7.30 事务级别: READ-COMMITTED 测试内容 在MySQL官方文档中有如下描述: For SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE, locks are acquired for sc
阅读全文
摘要:测试环境 MySQL版本: 5.7.30 事务级别: READ-COMMITTED 测试内容 在MySQL官方文档中有如下描述: For SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE, locks are acquired for sc
阅读全文
摘要:测试环境 MySQL版本: 5.7.30 事务级别: READ-COMMITTED 测试数据 mysql> show create table tb1001 \G *************************** 1. row *************************** Table
阅读全文
摘要:涉及表结构 CREATE TABLE `am_friend_send_link` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `task_id` int(11) NOT NULL COMMENT '任务id', `rob
阅读全文
摘要:准备测试数据: 测试1: 上面操作执行后,使用SHOW ENGINE INNODB STATUS查看锁信息 上面事务加两个锁: 1、表上加意向修改锁(IX)。 2、在新插入的记录上加行锁(RECORD LOCKS ..lock_mode X locks rec but not gap) 测试2: 上
阅读全文
摘要:准备测试数据: 测试1: 使用SHOW ENGINE INNODB STATUS 查看,输出锁信息为: 加锁详解:
阅读全文
摘要:准备测试数据: 测试1: 锁阻塞信息如下: 绿色部分表示申请锁成功,黄色部分表示申请锁被阻塞。 使用SHOW ENGINE INNODB STATUS 查看,输出锁信息为: 加锁详解: Record LOCK, HEAP NO 3 PHYSICAL RECORD: n_fields 5; COMPA
阅读全文
摘要:在事务插入数据过程中,为防止其他事务向索引上该位置插入数据,会在插入之前先申请插入意向范围锁,而如果申请插入意向范围锁被阻塞,则事务处于gap before rec insert intention waiting的等待状态。 MySQL官方文档解释如下: 准备测试数据: 先执行事务(事务13286
阅读全文
摘要:测试脚本: 案例分析 参考: INSERT加锁规则
阅读全文
摘要:淘宝林晓斌总结 学习整理: Insert操作加锁规则 官方文档:
阅读全文
摘要:按照非索引列更新 ## ## 测试数据: CREATE TABLE `tb4001` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(200) DEFAULT NULL, `c3`
阅读全文
摘要:非索引列更新 ## ## 测试数据: CREATE TABLE `tb4001` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `c1` int(11) DEFAULT NULL, `c2` varchar(200) DEFAULT NULL, `c3` in
阅读全文
摘要:在MySQL中,事务隔离级别RC(read commit)和RR(repeatable read)两种事务隔离级别基于多版本并发控制MVCC(multi-version concurrency control)来实现。
阅读全文