Oracle|MySQL|SQL Server的事务隔离级别

本文详细介绍了Oracle、MySQL和SQLServer三种数据库系统中事务隔离级别的支持情况和默认设置,包括ReadUncommitted、ReadCommitted、RepeatableRead和Serializable等,并提供了设置和查询隔离级别的具体SQL语句。

支持的隔离级别及默认值

 OracleMySQLSQL Server

支持

  • Read Committed提交读

  • Serializable可串行化

  • Read Uncommitted未提交读

  • Read Committed提交读

  • Repeatable Read可重复读

  • Serializable可串行化

  • Read Uncommitted未提交读

  • Read Committed提交读

  • Repeatable Read可重复读

  • Serializable可串行化

  • Snapshot快照

  • Read Committed Snapshot已经提交读隔离

默认

Read Commit提交读

Repeatable Read可重复读

Read Commit提交读

 

设置语句

Oracle

-- 设置提交读
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- 设置可串行化,SYS用户不支持该操作
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

MySQL

MySQL的设置可以分为系统级别(GLOBAL)和会话级别(SESSION)

-- 未提交读
SET GLOBAL|SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- 提交读
SET GLOBAL|SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- 可重复读
SET GLOBAL|SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 可串行化
SET GLOBAL|SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

SQL Server

-- 未提交读
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- 提交读
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- 可重复读
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 可串行化
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- 快照
ALTER DATABASE TEST SET ALLOW_SNAPSHOT_ISOLATION ON;
-- 已经提交读隔离
ALTER DATABASE TEST SET READ_COMMITTED_SNAPSHOT ON;

查询语句

Oracle

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')

MySQL

-- 查询当前会话的事务隔离级别
SELECT @@TX_ISOLATION;
-- 查询数据库系统的事务隔离级别
SELECT @@GLOBAL.TX_ISOLATION;
-- 两者同时查询
SELECT @@TX_ISOLATION AS current_session_isolation_level,
    @@GLOBAL.TX_ISOLATION as global_isolation_level

SQL Server

DBCC USEROPTIONS

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值