数据库中数值+1的问题

看到一篇评论认为在应用程序代码中执行+1操作是错误的,理由是并行两次对一个记录加一,结果只会加一次,丢失一次。数值+1是一个非常简单的数据操作,如果数值+1会有并发问题,所有由程序执行的更新代码都有并发问题,这样任何数据更新代码都不能写在应用层了,显然数据库不是这样工作的。
数据库之所以叫数据库,因为它不仅仅是序列化对象然后替换文件内容的简单文件操作,数据库有机制保护数据一致性,应用程序一般没必要为一致性担心。下面以iBoxDB为例,讲解一下在应用程序代码中并行执行+1会有什么情况,其它专业数据库有大同小异的处理方式。
首先是个简单的例子,创建两个Box,相当于两个事务,然后在每个事务中把数据加1,接着提交。
这个测试是先Box1提交 再Box2提交.
Box box1 = auto.cube();
        Box box2 = auto.cube();
        {
            Binder binder1 = box1.bind("Book", 1l);
            Book book1 = bi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值