mysql 锁机制演示
程序员文章站
2024-01-20 22:18:22
...
- InnoDB引擎,只有通过索引检索数据,才会使用行锁,否则的话使用表锁
session1
先开始
set autocommit = 0;
start TRANSACTION;
begin;
update data set age=15 where id=1;
session2
set autocommit = 0;
start TRANSACTION;
begin;
update data set age=16 where id=1;
2.两个事务都没有自动提交,第二个事务在等待行锁,一直没有获得锁,抛出异常,死锁时一个InnoDB会让一个事务回退,另一个事务完成。
[Err] 1205 - Lock wait timeout exceeded; try restarting transaction
3MyISAM引擎,表级锁
lock table 表名 read 可以读
insert into tablec(id,name) values(6,'ef') 一直等待锁
unlock table; 解锁
插入数据成功
查看哪些表锁住了
show OPEN TABLES where In_use > 0;
kill 进程号
show full PROCESSLIST 展示进程
4.锁机制
- 表级锁,开销小,加锁快,不会出现死锁,锁粒度大,发生冲突的概率高,并发度低,MyISAM采用这种锁
- 行级锁,开销大,加锁慢,会出现死锁,锁定粒度小,发生冲突概率低,并发度高。InnoDMB采用这种锁。
上一篇: Pytorch神经网络之自动微分
下一篇: Spring MVC核心内容