数据库的并发性及带来的问题

1.什么是数据库并发性:       
          数据库最大的特点是数据共享。即可以同一时间供多个用户根据自己的需要来操作数据库。我们生活中的许多数据库应用系统都是同一时刻允许各个用户执行不同的操作。如:火车票售票、飞机订票、银行系统、超市管理 等等。 数据库中最小的工作单元是事务。事务可以一个一个顺序执行,即某一时刻只能执行一个事务,其他事务必须等到当前事务运行结束之后才能运行。这种类型的事务价值不大,因为造成了计算机资源的闲置。比如一个事务在运行过程中需要CPU资源,而此时I/O资源、可能闲置。为了充分提高系统的执行效率,最大限度的利用计算机中的资源,多个事务并发执行更具有价值,这就叫做事务的并发性。事务的并发方式有多种。一种是运行在单处理器系统中。这种并发方式主要是在单处理器系统中同时运行多个事务,多个事务共享一个CPU资源,从而提高CPU的利用率,这种并发方式其实还是多个事务轮流使用CPU,不过因为CPU的速度很快,看起来像是多个事务在同时执行。另一种是在多处理器方式中,即存在多个CPU,每个CPU可以同一时刻执行一个或多个事务。 数据库的并发性提高了数据库的运行效率,但是也带来了很多意想不到的后果。比如某个事务在修改一条数据,此时也有可能另外一个事务在删除这一条数据,这就造成了数据的不一致性,为了解决这个问题数据库系统提供并发性的同时还提供了并发控制机制。数据库的并发性及并发控制都是衡量数据库系统性能的重要标准。
 
2. 数据库的并发性带来了很多意想不到的问题
      
可以概括为三种:丢失修改、不可重复读、脏读数据。
     a)    丢失修改:比如有下面一条数据:"K686  株洲  长沙 12 500".,表示株洲-长沙的K686次车,票价12元,现有数量500张。现在有多个售票窗口在出售此火车票。 A窗口读出车票500,然后卖掉一张,火车票应该变成499张。与A同时的还有B、C、D窗口同时读出火车票500张,然后B、C、D都各卖掉一张,因为每个窗口从数据库读出的都是500,所以写回数据库的时候都是499。然后实际的情况是卖掉了四张,实际剩余票数是496。因为并发性导致了数据库中数据发生错误,这种错误就称为丢失修改。
    b)    不可重复读:不可重复读指的是一个事务在前后两次读取数据是发现不一致。比如,事务T1读取一条数据,事务T2正在修改这条数据,当T1再次读取同一条数据时发现前后读取的不一致。这就称为不可重复读。
    c)     读“脏”数据:比如,事务 T1 修改了一条数据,事务 T2 读取了这条数据,然而 T1 由于某种原因进行了回滚,此时T2读到的就是一条“脏”数据,又叫做“幻影”数据。
数据库并发操作带来的问题可以概括为以上三类,产生这些问题的主要原因是因为并发操作破坏了事务的隔离性,怎么解决这个问题?使事务执行的时候互不影响、互不干扰?
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值