用示例比较oracle的 read committed 和serializable 事务隔离等级的区别,给出sql
答案:2 悬赏:50 手机版
解决时间 2021-02-28 17:39
- 提问者网友:遮云壑
- 2021-02-28 13:11
用示例比较oracle的 read committed 和serializable 事务隔离等级的区别,给出sql
最佳答案
- 五星知识达人网友:野味小生
- 2021-02-28 13:41
1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。
2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。
2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。
全部回答
- 1楼网友:woshuo
- 2021-02-28 13:47
1、幻想读:事务t1读取一条指定where条件的语句,返回结果集。此时事务t2插入一行新记录,恰好满足t1的where条件。然后t1使用相同的条件再次查询,结果集中可以看到t2插入的记录,这条新纪录就是幻想。
2、不可重复读取:事务t1读取一行记录,紧接着事务t2修改了t1刚刚读取的记录,然后t1再次查询,发现与第一次读取的记录不同,这称为不可重复读。
3、脏读:事务t1更新了一行记录,还未提交所做的修改,这个t2读取了更新后的数据,然后t1执行回滚操作,取消刚才的修改,所以t2所读取的行就无效,也就是脏数据。
为了处理这些问题,sql标准定义了以下几种事务隔离级别
read uncommitted 幻想读、不可重复读和脏读都允许。
read committed 允许幻想读、不可重复读,不允许脏读
repeatable read 允许幻想读,不允许不可重复读和脏读
serializable 幻想读、不可重复读和脏读都不允许
oracle数据库支持read committed 和 serializable这两种事务隔离级别(oracle还提供了自己独有的事务隔离级别:read only ;default read committed(最低级别))。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯