解决数据库并发下的脏数据的思考
程序员文章站
2022-03-29 22:55:33
...
一般解决数据库脏数据的问题,常常用到乐观锁和悲观锁。
乐观锁是在我取出数据进行操作前获取到当前一个时间戳,当更新的时候在对比下时间戳。如果时间戳相同则更新,否则不更新。
悲观锁则是在取出数据的时候将这条数据加锁,其他要获取操作这条数据的动作要等到释放锁之后才能操作。
最近接触到另外一种方式: 那就是将你要操作的数据取出来后在更新的时候将操作前的数据放到where后面去,这样也可以防止你在操作的时候其他人已经更新了数据。
例如
这个只是一个可性的办法,但是还是有一些问题,不过局部还是可以用的。
乐观锁是在我取出数据进行操作前获取到当前一个时间戳,当更新的时候在对比下时间戳。如果时间戳相同则更新,否则不更新。
悲观锁则是在取出数据的时候将这条数据加锁,其他要获取操作这条数据的动作要等到释放锁之后才能操作。
最近接触到另外一种方式: 那就是将你要操作的数据取出来后在更新的时候将操作前的数据放到where后面去,这样也可以防止你在操作的时候其他人已经更新了数据。
例如
select ID, Name, age, sex, salar from emp 如果你要将1ID对于的Salar改为100,你在取出来的时候是50,那么你在where中加上salar之前的值。 update emp set salar = 100 where salar = 50 and ID=1
这个只是一个可性的办法,但是还是有一些问题,不过局部还是可以用的。
上一篇: 详解Virtual Box配置CentOS7网络(图文教程)
下一篇: 你抠猛了
推荐阅读
-
js input输入百分号保存数据库失败的解决方法
-
C#从数据库读取数据到DataSet并保存到xml文件的方法
-
sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法
-
Python爬取数据并写入MySQL数据库的实例
-
VS2008连接SQL Server数据库文件出错的解决方法
-
登录oracle数据库时密码忘记的解决方法
-
Orcale 数据库客户端PL/SQL 中文乱码的问题解决方法
-
解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法
-
SQL Server数据库复制失败的原因及解决方法
-
SQL Server 2005数据库还原错误的经典解决方案