Mysql的锁
Mysql的锁
1.分类
1.1 按照范围
- 表级锁
- 行级锁
1.2 其他
- 排它锁
- 共享锁
l
注:创建表的时候一般使用InnoDB引擎;
2.排它锁
-
在InnoDB引擎中,update、insert 、delete 的行为内部都会先申请锁(排它锁),申请到之后才执行相关的操作,最后在释放锁。
所以,当多个人同时想数据库执行:insert、update、delete操作时,内部加锁后会排队逐一执行
而select则默认不会申请锁。(查询不影响数据库的数据改变)
SELECT * FROM XXX;
select申请锁,需要配合 事务+特殊语法 实现
-
for update
,排它锁,加锁之后其他不可以读写。begin; select * from for update --表级锁 commit; -- 完整的事务
没有提交事务之前,锁会留住对应的语句排队执行;
-
提交完事务之后,执行对应的sql; -
排它锁的应用场景
-
Python代码实现
3.共享锁
-
共享锁的使用场景