aba问题mysql_详解 BAT 面试中常考的数据库「锁」问题

在数据库的操作中,有可能会出现数据不一致的问题,一个常见的例子如下:A 给 B 转账 100 元A 的账户减少 100 元B 的账户增加 100 元完成若在 2 后的一瞬间进行查看,可以发现 A 的账户减少了 100 元但是 B 的账户余额却没有任何变化(当然,这种情况只发生在对应课本的对应章节里),数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的...
摘要由CSDN通过智能技术生成

864b957ddb0d5cb7b84eb3cb1e730e8a.png

在数据库的操作中,有可能会出现数据不一致的问题,一个常见的例子如下:

  1. A 给 B 转账 100 元
  2. A 的账户减少 100 元
  3. B 的账户增加 100 元
  4. 完成

若在 2 后的一瞬间进行查看,可以发现 A 的账户减少了 100 元但是 B 的账户余额却没有任何变化(当然,这种情况只发生在对应课本的对应章节里),数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性,例如:

现有两处火车票售票点,同时读取某一趟列车车票数据库中车票余额为 X。两处售票点同时卖出一张车票,同时修改余额为 X-1 写回数据库,这样就造成了实际卖出两张火车票而数据库中的记录却只少了一张。

产生这种情况的原因是因为两个事务读入同一数据并同时修改,其中一个事务提交的结果破坏了另一个事务提交的结果,导致其数据的修改被丢失,破坏了事务的隔离性,其他类似的问题还有:

  • 丢失或覆盖更新
  • 读脏数据
  • 非重复读

并发控制要解决的就是这类问题,在公司的面试中关于数据库的环节往往会有这样的问题:如何解决数据库并发带来的不一致性?锁分为哪几类,分别有什么作用?

5cfb25f020b8a60b9504b115906e5aaf.png

什么是锁

886e10169571577916acb8cecab0d867.png

为了面对由于并发引来的一些问题,在数据库中有「锁」的概念,即当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性,为了通俗地理解锁的概念,以写作作为比喻:

在一个博客平台上写作和发布时,对于已经发布的文章可以允许所有人同时阅读,而对于正在修改的文章,我们并不希望读者看到我们修改的过程,同时也不希望其他的编辑对我们正在修改的文章有任何的修改,所以我们将文章暂时地下线进行修改&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值