欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 锁机制演示

程序员文章站 2024-01-20 22:18:22
...
  1. 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采用这种锁。
相关标签: mysql