mysql临键锁如何使用
作者:WeekendLife
时间:2023-04-26
浏览:4
1、默认情况下,innodb使用临键锁锁定记录。select...forupdate2、当查询索引包含唯一属性时,临键锁将被优化并降级为记录锁,即只锁定索引本身,而不是范围。3、不同场景下的临键锁会退化。实例事务1starttransaction;selectSLEEP(4);select*fromtestwhereage=22forupdate;select*fromtestwhereage>23forupdate;selectsleep(20);commit;*********************
本文目录
1、默认情况下,innodb使用临键锁锁定记录。
select ... for update
2、当查询索引包含唯一属性时,临键锁将被优化并降级为记录锁,即只锁定索引本身,而不是范围。
3、不同场景下的临键锁会退化。
实例
事务1 start transaction; select SLEEP(4); select * from test where age=22 for update; select * from test where age>23 for update; select sleep(20); commit; ************************** 事务2 start transaction; select sleep(8); select * from test where age=20 for update; select * from test where age=21 for update; select * from test where age=22 for update; select * from test where age=23 for update; commit; ************************************ 事务执行状态 事务1 start transaction > OK > 时间: 0s select SLEEP(4) > OK > 时间: 4.001s select * from test where age=22 for update > Affected rows: 0 > 时间: 0.001s select * from test where age>23 for update > Affected rows: 0 > 时间: 0.001s select sleep(20) > OK > 时间: 20s commit > OK > 时间: 0.001s *********************** 事务2 start transaction > OK > 时间: 0.001s select sleep(8) > OK > 时间: 8s select * from test where age=20 for update > Affected rows: 0 > 时间: 0.001s select * from test where age=21 for update > Affected rows: 0 > 时间: 0.001s select * from test where age=22 for update > Affected rows: 0 > 时间: 14.158s select * from test where age=23 for update > Affected rows: 0 > 时间: 0.001s commit > OK > 时间: 0s
作者最新文章
process lasso怎么关闭开机自动启动
2026-11-01 09:22
红白网站AO3怎么访问?解密使用指南
2026-10-30 11:06
线上PDF转Word怎么操作?如何在线转换PDF为Word?
2026-10-29 15:04
EK by LM TEK 推出 RTX 5070Ti/5080 显卡亚克力水冷头,适配华硕 TUF
2026-10-27 11:04
PS快捷键完整版有哪些
2026-10-27 08:11
上一篇:
thinkphp中如何实现文件上传功能
下一篇:
mysql的单列多值存储实例分析
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多

































