|
知识路径: > 计算机软件与网络基础知识 > 数据库系统 > 数据库管理系统的类型、结构和性能评价 > 数据库的控制功能 > 并发控制 >
|
相关知识点:4个
|
|
|
|
数据库的并发操作带来的主要问题有:丢失更新问题,不一致分析问题(读过时的数据),依赖于未提交更新的问题(读脏数据)。这3个问题需要DBMS的并发控制子系统来解决。
|
|
|
(1)丢失更新(丢失修改):两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,T1的修改丢失。
|
|
|
(2)读过时的数据(不可重复读):事务T1读取某一数据,事务T2读取并修改了同一数据,T1为了对读取值进行校对再读此数据,得到了不同的结果。例如,T1读取B= 100,T2读取B并把B改为200,T1再读B得200,与第一次读取值不一致。
|
|
|
(3)读脏数据:事务T1修改某一数据,事务T2读取同一数据,而T1由于某种原因被撤销,则T2读到的数据就为“脏”数据,即不正确的数据。例如,T1把C由100改为200,T2读到C为200,而事务T1由于被撤销,其修改宣布无效,C恢复为原值100,而T2却读到了C为200,与数据库内容不一致。
|
|
|
例如,假设某3个事务T1、T2和T3并发执行的过程如下表所示。
|
|
|
|
|
在上表中,事务T1、T2分别对数据D1、D2和D3进行读写操作,在t4时刻,事务T1将D1、D2和D3相加存入X1,X1等于450。在t8时刻,事务T2将D3减去D2存入D2,D2等于200。在t13时刻,事务T1将D1、D2和D3相加存入X1,X1等于550,验算结果不对。这种情况就属于不可重复读。在t14时刻事务T3将D2加50存入D2,D2等于150。这样,就丢失了事务T2对D2的修改,这种情况就属于丢失更新。
|
|
|