innodb存储引擎第六章(锁)

Lock和latch

Latch是轻量级的锁,latch可以分为互斥锁和读写锁。无死锁检测机制。

注意,Mysql 行级锁无索引时变表级锁

Locks Set by Different SQL Statements in InnoDB

If you have no indexes suitable for your statement and MySQL must scan the entire table to process the statement,

every row of the table becomes locked, which in turn blocks all inserts by other users to the table.

It is important to create good indexes so that your queries do not unnecessarily scan many rows.

如果你没有合适的所有用于你的语句,MySQL 必须扫描整个表来处理语句,

每个表的记录被锁定,blocks 所有其他用户插入到这个表

创建好的所有是重要的 这样你查询不需要扫描很多记录
————————————————
版权声明:本文为CSDN博主「没有幻觉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_30959723/article/details/113149027

意向锁

等待表锁操作的完成,意思是需要等待表一上的s表锁释放后,再对表一加上IX锁。

上面说到,等待表锁操作的完成,意思是需要等待表一上的s表锁释放后,再对表一加上IX锁。通过表中数据可知,S与IX不兼容。

具体可看P255-P258页。

一次性非锁定读

具体例子可参考P260页。

一次性锁定读

自增长和锁

两种自增长方式:

1.Auto-Inc locking:

2. 互斥量:

先对自增长的插入进行分类:

1。

补充:

联合索引(b,a)中,索引b在前,而自增长的是索引a,所以会报错。

外键和锁

锁的算法

锁的问题

脏读

不可重复读

阻塞

死锁

死锁的概念:

注:FIFO是先进先出队列,假如先入的事务进行回滚时,花费的时间相对于后入的事务花费的时间更多,此时根据FIFO还是对先入的事务进行回滚就不再合适了。

.

注:

P280死锁的概率,略。

死锁的示例

另一个死锁的例子

注:假如说执行的顺序是A3(A3表示会话A在时间点3)-->A5-->B4,  B4执行时会得到3这个元组,

而3这个元组是会话A在时间点5插入的,如此看来就是会话B在时间点4得到了会话A在时间点5插入的数据,因此显得不合理。

锁升级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值