谈谈一致性问题

什么是一致性问题

在软件开发中存在两种一致性问题:一是单数据副本时的一致性问题(如数据库),二是因为在分布式系统下数据的复制导致的一致性问题(如缓存与数据库数据的不一致,严格来说cpu缓存导致的数据一致性问题也在此列)。

这篇文章主要讨论第一种一致性问题,即数据库事务中的一致性问题。

一致性问题是如何产生的,以及事务概念的产生

一个软件系统不可避免会使用数据,一旦有了数据,就会有脏数据问题,是为一致性问题。就像房间没有良好的清洁行为,自然会变得脏乱差。

这个比喻可能还是不好理解。还是以转账为例。假设A向B转账。(我tm非常讨厌别人一聊到一致性问题就拿转账举例,真他妈的枯燥,但是一时也想不到更加生动的例子。只要能说明问题,绝对不举例,不管例子是否合适,都加重了阅读者的负担。这是我的一个原则吧)

事务概念的雏形----一次数据操作的整体性

什么是软件?软件 = 程序 + 数据。有了数据,然后程序用来处理数据。一个数据系统肯定是一直在做 数据操作 的过程。在转账系统中就是,一直在做转账操作。

一次转账的过程,并不是 一蹴而就 的。如果A账户扣减了余额,然后数据库宕机,此时
数据库就处于不一致状态之中。这是由 非原子性 造成的。一次转账不是一个 整体 。记住整体这个词,它是事务概念的雏形。

持久性 ----一旦整个操作提交,数据库会保证整个数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值