mysql行锁测试
特别注意:行锁,表锁区别:其实就是看where后面的条件是否有有索引,有索引的时候就是行锁,没有索引的时候就是表锁,主键本身就是索引。
也就是没有索引的话,虽然修改的是一行,但是还是是锁表,但是where条件后面是主键是行锁
1.查看mysql自动提交是否开启
show variables like '%commit%'
2.当前 session1关闭mysql自动提交
set autocommit=off;
3.新建test表,session1更新表数据
update test set data='test@test.com' where id=1;
4.新开一个session2窗口更新同样行数据,注意行锁有等待超时限制,一定时间会释放
set autocommit=off;
update test set data='aa@aa.com' where id=2;
commit;
发现id=2可以修改,证明session1触发的是行锁,这个时候去更新同样的行
update test set data='aa@aa.com' where id=1;
5.查看系统是否有锁等待
show status like '%lock%';
Innodb_row_lock_current_waits这个参数的值
6.查看show open tables ,可以看出
show open tables where In_use > 0;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架