“OceanBase隔离级别” 网站介绍
隔离级别定义
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 有可能存在跨租户的事务。在可串行化隔离级别下不允许执行跨租户的事务。
- 上一篇:Hive如何比较两张表所有字段的一致性
- 下一篇:深入剖析Oracle SCN机制
- 最近发表
-
- 联想推出 IdeaPad 14s / 15s:均为 3399 元,运行 Win11 系统
- 顶配版ThinkPad X1 Carbon评测
- 联想ThinkPad X1 Carbon评测
- lenovo联想 拯救者-14 加装ssd、内存及win10转移到ssd经验谈
- 联想发布新款耳机鼠标等配件:专为ThinkPad X1设计
- 杜比全景音体验,联想K4 Note在印度正式发布
- 3099 元起,联想推出 IdeaPad 15:约10小时续航,预装 Win11系统
- 联想拯救者Y70、小新Pad Pro 2022发布丨拯救者Y70测评体验
- 千元可定制!联想K4 Note印度发布:杜比全景音体验
- 声临其境 联想TAB2 A10平板联手杜比
- 标签列表
-
- serv-u 破解版 (6)
- 极域电子教室2009 (6)
- 6300主题下载 (1)
- oracle11204下载 (1)
- c++论坛 (14)
- huaweiupdateextractor (4)
- thinkphp6下载 (7)
- 前端论坛 (11)
- mysql 时间索引 (13)
- mydisktest_v298 (35)
- unlocker208 (1)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 二调符号库 (23)
- oppoa5专用解锁工具包 (8)
- acmecadconverter_8.52绿色版 (25)
- oracle timestamp比较大小 (7)
- chm editor破解版 (7)
- throttlestop防止降频 (9)
- f12019破解 (16)
- 流星蝴蝶剑修改器 (18)
- pygame中文手册 (2)
- 联想杜比音效驱动下载 (10)