JavaShuo
栏目
标签
mysql-innodb-锁
时间 2020-02-27
标签
mysql
innodb
栏目
MySQL
繁體版
原文
原文链接
锁的算法
Record Lock:单个行记录上的锁
经过主键索引,锁定单行
read committed
隔离级别下采用。
Geo Lock:间隙锁,锁定一个范围但不包含自己
能够防止多个多个事务将记录插入到同一个范围内(Phantom Problem)
对于惟一键值对的锁定,GeoLock会降级为Record Lock。
Next-Key Lock:Geo Lock+Record Lock,锁定一个范围并锁定记录自己
在同一事务下,连续执行两次sql语句可能致使不一样的结果。第二次的sql可能会返回以前不存在的行
例如,假设表里有id为1,2,5三条记录,对于
select * from table where id >2 for update
语句,
Next-Key Lock
锁定的不止是
5
这一行,而是[2,+∞]。
repeatable read
隔离级别采用
数据问题
Dirty Read(脏读问题)
一个事务中读到了另外一个事务中未提交的数据,违反了数据库
隔离性
,隔离级别
read uncommitted
。
Phantom Problem(幻读问题)
在同一事务下,连续执行两次sql语句可能致使不一样的结果。第二次的sql可能会返回以前不存在的行。
repeatable read隔离级别下,Innodb采用Next-Key Lock对查询区域进行枷锁解决幻读问题。
不可重复读
一个事务中读到了另外一个事务中未提交的数据,违反了数据库
一致性
。
通常状况下,读到的都是已提交的数据,不少厂商默认隔离级别就是read committed。
MYSQL官方文档将不可重复读定义为
Phantom Problem(幻读)
,经过Next-Key Lock来解决幻读问题。
Next-Key Lock不只锁住了扫描到的索引,同时锁住了索引的覆盖范围。
丢失更新
T1事务提交的更新操做被T2事务的更新覆盖掉。
物理丢失更新不会出现,由于T2事务的操做会被T1阻塞。
逻辑丢失可能会出现:全部操做添加X排他锁,数据库
串行化
。
阻塞
T2事务须要等待T1事务释放资源后再进行资源占有。
死锁
两个或以上的事务因争夺资源形成的互相等待现象。
解决方案:
算法
超时回滚:当超时的事务所占权重较大或事务更新了较多行,undolog较大时回滚所用时间较长。
wait-for graph(等待图) 死锁检测方式:
sql
等待图存储了锁的信息链表和事务等待链表,经过深度优先搜索进行递归排查。
查到后选择undolog较小的事务进行回滚。
锁升级
若是数据库设计者认为锁是一种稀缺资源,则会出现1000个行锁升级为页锁,页锁升级为表锁现象。
Innodb没有锁升级。由于每一个事务都是对页进行管理,且采用的是位图存储的方式。锁开销较小。
相关文章
1.
MySQLInnoDB存储引擎之锁
2.
MySQLInnoDB表空间管理20201102
3.
每日记录之MysqlInnoDB缓存
4.
MySQLInnoDB存储引擎基本管理20201018
5.
MySQLInnoDB引擎事物隔离级别RC和RR
6.
MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
7.
MySQL:行锁、表锁、乐观锁、悲观锁、读锁、写锁
8.
悲观锁,乐观锁,行锁,表锁,页锁,共享锁,排他锁
9.
各种锁(互斥锁,自旋锁,读写锁,乐观锁,悲观锁,死锁)
10.
死锁、活锁、饥饿锁、无锁
更多相关文章...
•
Hibernate悲观锁
-
Hibernate教程
•
Hibernate乐观锁
-
Hibernate教程
•
漫谈MySQL的锁机制
•
TiDB 在摩拜单车在线数据业务的应用和实践
相关标签/搜索
mysqlinnodb
加锁
车锁
锁头
封锁
门锁
开锁
连锁
互锁
MySQL
Redis教程
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
.Net core webapi2.1生成exe可执行文件
2.
查看dll信息工具-oleview
3.
c++初学者
4.
VM下载及安装
5.
win10下如何安装.NetFrame框架
6.
WIN10 安装
7.
JAVA的环境配置
8.
idea全局配置maven
9.
vue项目启动
10.
SVN使用-Can't remove directoryXXXX,目录不是空的,项目报错,有红叉
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
MySQLInnoDB存储引擎之锁
2.
MySQLInnoDB表空间管理20201102
3.
每日记录之MysqlInnoDB缓存
4.
MySQLInnoDB存储引擎基本管理20201018
5.
MySQLInnoDB引擎事物隔离级别RC和RR
6.
MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁
7.
MySQL:行锁、表锁、乐观锁、悲观锁、读锁、写锁
8.
悲观锁,乐观锁,行锁,表锁,页锁,共享锁,排他锁
9.
各种锁(互斥锁,自旋锁,读写锁,乐观锁,悲观锁,死锁)
10.
死锁、活锁、饥饿锁、无锁
>>更多相关文章<<