数据库乐观锁和悲观锁例子和分析
生活随笔
收集整理的這篇文章主要介紹了
数据库乐观锁和悲观锁例子和分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.樂觀鎖:樂觀地認為每次讀數據別人都不會修改,所以不需要用數據庫鎖
//查出商店中id=1的商品的版本號
select version currentVersion from shop where id=1;
//把id=1的商品庫存減1,并把版本號自增1
update shop set num = num - 1,version = version + 1 where id=1 and version = currentVersion;2.悲觀鎖:悲觀地認為每次讀數據別人都會修改,所以要用數據庫鎖
//0.開始事務
begin;
//1.查出商品庫存
select num from shop where id=1 for update;
//2.將商品庫存減1
update items set num = num - 1 where id = 1;
//3.提交事務
commit;
悲觀鎖用了select for update,在事務結束之前其他事務都不能改id=1的數據,
如果id用了索引則只鎖行,沒用索引則會鎖表。3.數據經常改,使用悲觀鎖,能保證數據正確地按順序被修改,此時用樂觀鎖則會發生很多修改失敗的情況。數據不常改,使用樂觀鎖,因為要改的數據別人基本都不會改,所以不用使用數據庫鎖那么重,耗性能。
總結
以上是生活随笔為你收集整理的数据库乐观锁和悲观锁例子和分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下磁盘sda,Linux下磁盘
- 下一篇: 按洲划分的国家和地区代码整理 包含:中文