首页 > 数据库 >数据库乐观锁和悲观锁

数据库乐观锁和悲观锁

时间:2023-02-24 16:22:05浏览次数:43  
标签:status 数据库 update 乐观 device 悲观 test MariaDB id

悲观锁

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁

例子:使用的是Mariadb,用的是for update和事务

MariaDB [test]> begin;
MariaDB [test]> select id,deviceid,status from device where status=2 for update;
MariaDB [test]> update device set status=1 where id=7;
MariaDB [test]> commit;

 在另外一个终端查看,如果上面一直没有commit,另一端就会报下面错误

MariaDB [test]> select id,deviceid,status from device where status=2 for update;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

 

 乐观锁

总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。 

 

标签:status,数据库,update,乐观,device,悲观,test,MariaDB,id
From: https://www.cnblogs.com/xianqingsong/p/17151771.html

相关文章