数据库并发性带来了哪些问题?

数据库的并发性带来了很多意想不到的问题。可以概括为三种:丢失修改、不可重复读、读“脏”数据。
一、丢失修改:比如有下面一条数据:"K686  株洲  长沙 12 500".,表示株洲-长沙的K686次车,票价12元,现有数量500张。现在有多个售票窗口在出售此火车票。 A窗口读出车票500,然后卖掉一张,火车票应该变成499张。与A同时的还有B、C、D窗口同时读出火车票500张,然后B、C、D都各卖掉一张,因为每个窗口从数据库读出的都是500,所以写回数据库的时候都是499。然后实际的情况是卖掉了四张,实际剩余票数是496。因为并发性导致了数据库中数据发生错误,这种错误就称为丢失修改。
二、不可重复读:不可重复读指的是一个事务在前后两次读取数据是发现不一致。比如,事务T1读取一条数据,事务T2正在修改这条数据,当T1再次读取同一条数据时发现前后读取的不一致。这就称为不可重复读。
三、读“脏”数据:比如,事务T1修改了一条数据,事务T2读取了这条数据,然而T1由于某种原因进行了回滚,此时T2读到的就是一条“脏”数据,又叫做“幻影”数据。
数据库并发操作带来的问题可以概括为以上三类,产生这些问题的主要原因是因为并发操作破坏了事务的隔离性,怎么解决这个问题?使事务执行的时候互不影响、互不干扰?这就是数据库中的封锁技术。请看下篇。

你可能感兴趣的:(数据库并发性带来了哪些问题?)