数据库—事务—并发控制技术
来源:互联网 发布:3d地图制作软件 编辑:程序博客网 时间:2024/04/30 07:54
一、事务。
事务指的是连续的对数据库操作的集合,对于一个事务中的所有的数据库操作,要么全部成功,要么全部失败。
允许多个用户同时使用的数据可系统为多用户数据库系统。多用户数据库系统的特点是:在同一时刻,并发运行的事务数量可以达到成千上万个。
多事务执行方式有三种:
1)事务的串行执行;(每个时刻只有一个事务执行,不能充分利用系统资源,发挥数据库共享资源的特点)
2)事务的交叉并发方式;(单处理机系统)
3)事务的同时并发方式;(多处理机系统,每个处理机运行一个事务,也是事务并发执行最理想的方式,受制于硬件环境,需要更复杂的并发控 制机制)
二、并发控制。
并发控制是和事务紧密相关的概念,并发控制通常是指对事务的并发控制。事务是并发控制的基本单位。数据库管理系统必须提供并发控制机制,并发控制是衡量一个数据库管理系统性能的重要指标之一。并发控制机制的任务是保证数据的隔离性和一致性。
并发操作带来的数据不一致性可以分为三部分:
1)丢失更新;
2)不可重复读;
3)读“脏”数据;
如上图所示:
1)丢失更新
丢失更新指的是事务T1和T2之间为“修改--修改”的关系。比如,数据库中原本机票价格为1000元,事务T1为将机票价格+100元,事务T1读到机票价格为1000元,执行操作+100元,事务T2也读取机票价格为1000元,将机票价格+200元,事务T1提交数据,之后事务T2提交数据,机票价格变为事务T2的1200元,事务T1的更新操作被覆盖掉了,叫做丢失更新。
2)不可重复读
不可重复读发生于事务T1和T2之间为“读--更新”的关系。其中,更新包括三类:修改、删除和插入。
- “读--修改”。事务T1在读机票数据为1000元,事务T2修改机票价格为1200元,事务T1想确认一下,再读出的机票价格为1200元,与第一次不一致;
- “读--删除”。事务T1读出数据库中有20条机票价格的数据,事务T2对此20条数据进行了删除其中2条的操作,事务T1再读出的机票价格只有18条信息,与第一次不一致,导致其中2条数据莫名的消失了;
- “读--插入”。事务T1读出数据库中有20条数据,事务T2插入两条数据,事务T1再一次读,得到的结果有22条数据,与第一次读出的条数不一致,莫名多了两条数据。
其中“读--删除”和“读--插入”会导致两次读出的结果莫名的增加或减少,因此,这两种情况又叫做“幻影读”。
3)读“脏”数据
读“脏”数据发生于事务T1和T2之间为“修改--读”的关系。比如,机票价格为1000元,T1将机票价格修改为1200元并写回到磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,机票价格回到1000元,T2读到的数据和数据库中的不一致,此为读“脏”数据。
数据不一致的原因:并发控制破坏了事务的隔离性。
并发控制的主要技术:
1.封锁
2.时间戳
3.乐观控制法
4.多版本并发控制
阅读全文