【面试题目】数据库事务隔离

什么是数据库事务隔离:

数据库事务隔离(isolation)指的是不同事务在提交的时候,按照提交的先后顺序执行。事务隔离性的四个等级,其中包括未提交读(read uncommitted),提交读(read committed),可重复读(repeatable read), 序列化读(serializable),隔离等级从低到高,最高级隔离等级是串行执行(序列化读)。


事务隔离性如何实现:

方法1. 通过锁的方式来实现隔离性
方法2. 使用多版本并发控制(MVCC)


接下来问锁的方式具体实现:

其中锁的方式也有两种:一种是用锁(lock),另一种则是多版本并发控制(MVCC)。
①第一是读写锁,应该先加读锁,读取完之后的某个时间再解开读锁,写锁则具有排他性(exclusive lock),一个事务只对一个数据进行加读锁,除非这个写锁释放。还有一种是两阶段封锁(Two-phase locking),第一阶段是加锁,第二阶段是解锁。
②多版本并发控制的方式主要是使用数据冗余的方式来实现事务隔离,每一行保存冗余数据,读写的时间戳,在对某一行数据继续update或者delete的时候,并不直接操作,而是复制多一份副本进行操作。


MYSQL默认的隔离级别是什么:

Repeatable read(可重复读)
查看命令是:show variables like ‘transaction_isolation’;

ORACLE默认的隔离级别是什么:

默认隔离级别应该是:read committed。
Oracle 查看事务隔离级别

第一步:
SELECT * From dual for update;
第二步:
SELECT s.sid, s.serial#,
case bitand(t.flag, POWER(2, 28))
  WHEN 0 THEN 'READ COMMITTED'
  ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');

查看结果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值