网站首页 > 博客文章 正文
隔离级别定义
ANSI 和 ISO/IEC 基于 SQL 标准定义了四种隔离级别,这些隔离级别根据事务并发执行过程中必须防止的现象来定义的。
可预防的异象包括:
脏读(Dirty Read)
一个事务读到其他事务尚未提交的数据。
不可重复读(Non Repeatable Read)
曾经读到的某行数据,再次查询发现该行数据已经被修改或者删除。例如:select c2 from test where c1=1;第一次查询 c2 的结果为 1,再次查询由于其他事务修改了 c2 的值,因此 c2 的结果为 2。
幻象读(Phantom Read)
只读请求返回一组满足搜索条件的行,再次执行发现另一个提交的事务已经插入满足条件的行。
基于上述三种异象定义的四种隔离级别如下:
读未提交(Read Uncommitted)
读已提交(Read Committed)
可重复读(Repeatable Read)
可串行化(Serializable)
OceanBase 数据库的 MySQL Mode 支持读已提交、可重复读两种隔离级别,Oracle Mode 支持读已提交、可重复读和可串行化三种隔离级别。两种模式下,OceanBase 数据库默认的隔离级别是读已提交。
隔离级别设置
语法
设置隔离级别有两种方式,分别为事务级别及 session 级别。
Transaction level:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Session level:ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
注意事项
不能在事务执行过程中设置隔离级别,否则会报错。
ERROR:ORA-01453: SET TRANSACTION must be first statement of transaction
在开启可串行化隔离级别时需要确保全局时钟服务(Global Timestamp Service)是打开的。
Session 需要维护 session 级别的事务隔离级别,在开启事务时获取 session 级别的事务隔离级别,该隔离级别可以被事务级别的隔离级别覆盖。
系统限制
内部事务
由用户事务触发的内部事务,以及维护内部表信息的事务都称为内部事务,内部事务采用 Read Committed 隔离级别。
跨租户事务
由于当前有一些内部表尚未拆分到普通租户下,OCP 有可能存在跨租户的事务。在可串行化隔离级别下不允许执行跨租户的事务。
猜你喜欢
- 2025-05-24 APIJSON快速入门-零后端代码,接口所见即所得
- 2025-05-24 OceanBase推出单机版,专为中小规模业务场景设计
- 2025-05-24 蚂蚁集团旗下数据库OceanBase发布全员信:CTO杨传辉担任AI一号位,统筹AI战略制定和技术产品落地
- 2025-05-24 【SQL】SQL 语法差异大全(PgSQL/MySQL/Oracle/TiDB/OceanBase)
- 2025-05-24 使用Python访问OceanBase数据库详细指南
- 2025-05-24 OceanBase系统架构
- 2025-05-24 OceanBase单机版发布,专为中小规模业务场景设计
- 2025-05-24 吐槽下 oceanbase 官网 !!!
- 2025-05-24 OceanBase 推出单机版 高度兼容MySQL和Oracle
你 发表评论:
欢迎- 380℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 374℃用AI Agent治理微服务的复杂性问题|QCon
- 366℃IT全明星|IntelliJ IDEA学习笔记(四、idea中怎么创建maven项目)
- 365℃初次使用IntelliJ IDEA新建Maven项目
- 359℃Maven技术方案最全手册(mavena)
- 356℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 352℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 352℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)