当前位置:Gxlcms > 数据库问题 > 我理解的数据库事务

我理解的数据库事务

时间:2021-07-01 10:21:17 帮助过:2人阅读

事务m2的操作包括

  读B,读A,   
  写B,写A,   
  提交AB

事务m3的操作包括

    读A,读B,   
    写A,写B,   
    提交AB

事务m4的操作包括

D,   
    提交D

1.若未授权读取ReadUncommitted

m1读A,B,写了A但没写B
此时m2不可以写B,可以读取AB,但是B是脏读。
隔离级别使用了“排他写锁”。

2.若授权读取ReadCommitted

m1读A,B,写了A但没写B
此时m2不可以写B,可以读取A,不能读取B,因为B是脏读。
隔离级别使用了“排他写锁”。
m1读写了A,B,提交A``B,
m3提交了A``B 此时m1准备第二次A是允许的。
隔离级别使用了“瞬间共享读锁”。
(但由于第二次读产生了不可重复读的问题,事务1脱力了元自行,因为逻辑上看事务1中被插入了3,影响了A的余额50%的计算。)

3.若可重复读取RepeatableRead

m1读A,B,写了A
但没写B此时m2不可以写B,可以读取A,不能读取B,因为B是脏读。
隔离级别使用了“排他写锁”。
m1读写了A,B,提交A``B,
m4提交了D此时m3是能读不能写A并更新提交的。
此时m4是能读能能插入D的。隔离级别使用了“共享读锁”。
(和ReadCommitted比RepeatableRead区别对已经提交的事务可以进行读,但不能写,但是同一张表可以插入新的记录。)

4.序列化Serializable

任何事务都只能等前一事务完全执行完再执行。 但是失去了并发性。

转载,有修改,我只是个搬运工

我理解的数据库事务

标签:

人气教程排行