innodb加锁分析
2016-03-10 11:12:12 4 举报
InnoDB是MySQL中常用的存储引擎之一,其支持行级锁和表级锁。在并发访问数据库时,为了保证数据的一致性和完整性,InnoDB会自动对数据进行加锁处理。当一个事务对一条记录进行修改时,会对该记录加行级锁,其他事务无法同时对该记录进行修改;而当多个事务同时修改同一张表时,则会对该表加表级锁,其他事务无法对该表进行任何操作。此外,InnoDB还支持共享锁和排他锁两种类型的锁,用于控制不同事务对数据的访问权限。通过合理的加锁策略,可以最大限度地提高数据库的并发性能和可靠性。
作者其他创作
大纲/内容
2
delete from t3 where id=3;
8
RR隔离级别对id=3这条记录加X锁
X锁
RR隔离级别见图5
10
3
b
14
delete from t2 where id=3;
m
4
7
11
RC隔离级别对id=3这条记录加X锁
d
select * from z where bb for update
1
5
f
RR隔离级别:在表只有6条记录的情况下就会有6条纪录锁,7个GAP锁任何需要持有锁的SQL都不能与之并发执行T4全表被锁死
h
a
RR隔离级别见图6
RR隔离级别对id=3这条记录加X锁,因为主键是name,根据唯一索引查找到id=3这条记录回溯到索引所以主键d也要加X锁
delete from t1 where id=3;
RC隔离级别因为id列无索引,只能走主键索引进行全部扫描,每条记录上都加锁,然后MySQL存储引擎层返回server层进行过滤,server在实现过程中会将不满足条件的行 unlock rows
delete from t4 where id=3;
RC隔离级别对id=3这条记录加X锁,因为主键是name,根据唯一索引查找到id=3这条记录回溯到主键所以主键d也要加X锁
可以插入[3,e]
gap
delete from t4where id=3;
图5
可以插入[3,g]
图6
0 条评论
下一页