【Mysql面试高频】- Mysql的乐观锁机制了解吗?
2021/5/13 19:28:36
本文主要是介绍【Mysql面试高频】- Mysql的乐观锁机制了解吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【Mysql面试高频】- Mysql的乐观锁机制?
乐观锁(所有用户都可以读取和修改,通过版本控制谁的修改有效)。
当先执行查询在执行修改的时候就会出现并发数据,会修改相同数据,导致结果不对。
select * from order where id = 1; update order set num = num+1 where id = 1;
并发时,同时查出来的num结果为1;修改的时候num都是相同值,一条执行结果未修改;
采用乐观锁来解决该方式:
在数据库表字段增添版本控制,或者直接使用修改时间字段作为参数。(时间字段的好处就是每次修改成功 自动更新修改时间字段则可以不用在sql中加入修改了。)
order表:
id num version update_time
select * from order where id = 1; update order set num = num + 1,version = version+1 where id = 1 and version = 1; select * from order where id = 1; update order set num = num + 1,version = version+1 where id = 1 and version = 1;
并发时,同时查出来的num结果为1,version结果为1,由于第一条sql修改已经执行。数据库实际version的结果为2了。第二条sql修改则失败。
结论: 由于第一条修改SQL已经执行,这个时候已经开启了乐观锁,所以第二条修改sql则执行失败。
这篇关于【Mysql面试高频】- Mysql的乐观锁机制了解吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享