MySQL锁

行锁

Record Lock

select * from user where id = 1 for update; -- 将id = 1这一行锁住

Gap Lock

-- id       1       6       8       12
-- name     张三    李四     王五     赵六
select * from user where id = 4 for update; -- 将锁住(1,6) 

Next-Key Lock

RR级别下默认加临键锁

可能会退化为记录锁(唯一索引的等值查询命中一条数据)或者间隙锁(唯一索引的等值查询没有命中数据)

Insert Intention Lock

是什么:由插入操作在行插入之前设置的间隙锁。这种锁表明了插入的意图

怎么加锁:假设有索引记录的值为 4 和 7。分别尝试插入值为 5 和 6 的不同事务,在获取插入行的独占锁之前,各自用插入意向锁锁定 4 和 7 之间的间隙,但由于行不冲突,所以它们不会相互阻塞。但是如果他们的都要插入6,那么就会需要阻塞了

表锁

意向锁

问:什么时候加意向锁? 答:增、删、改都会加意向排他锁,查(SELECT ... FOR UPDATE)可能会加 IS 或 IX

问:意向锁会与行锁冲突吗? 答:意向锁不会和行级锁互斥,但会影响表级锁的申请

悲观乐观锁

死锁

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇