Skip to content

关于《数据库事务处理的艺术-事务管理与并发控制》第一章1.1.4节的脏写问题 #3

Closed
@zizihrhr335500

Description

文中根据Jim Grey的《事务处理:概念与技术》引出lost update概念,即丢失更新现象同时提出了脏写等情况。表示除了串行化的事务处理还会有一些异常情况。
丢失更新很好理解对于本次事务的更新并不一定是期待的,可能被其他的并发事务再次覆盖。一般可以通过乐观锁解决。
但是这里同时提到的脏写情况不是很明白,书中这样描述,T1,T2两个事务 t0 ~ t3时刻
--------T1-------| -------T2
t0-----update
t1----------------------update
t2----------------------commit
t3-----abort
文中描述在T1,T2事务内(不一定什么隔离级别)当T2事务更新提交后,事务T1进行回滚会将T2的提交回滚掉,产生脏写。
我的理解是无论什么事务隔离级别,在T1先update的情况下先拿到排他锁,事务T2一定不会先进行commit,一定要等到事务T1回滚获取到资源后进行update和提交,那么就不应该存在T1的事务回滚将T2的事务的提交脏写掉。
希望能够帮忙解答

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions