基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
SET TRANSACTION
更新时间:2023-07-18 17:26:00
描述
设置事务隔离级别。
OceanBase 数据库的 MySQL 模式支持读已提交、可重复读两种隔离级别。默认的隔离级别为读已提交。
不能在事务执行过程中设置隔离级别,否则会报错。
ERROR:ORA-01453: SET TRANSACTION must be first statement of transaction在开启可串行化隔离级别时需要确保全局时钟服务(Global Timestamp Service,GTS)是打开的。
Session 需要维护 Session 级别的事务隔离级别,在开启事务时获取 Session 级别的事务隔离级别,该隔离级别可以被事务级别的隔离级别覆盖。
语法
SET [GLOBAL | SESSION | LOCAL] TRANSACTION trans_opt;
trans_opt:
transaction_access_mode
| isolation_level
| transaction_access_mode, isolation_level
| isolation_level, transaction_access_mode
transaction_access_mode:
[READ ONLY | READ WRITE]
isolation_level:
ISOLATION LEVEL {
READ UNCOMMITED
| READ COMMITED
| REPEATABLE READ
| SERIALIZABLE
}
参数解释
| 参数 | 描述 |
|---|---|
| GLOBAL | SESSION | LOCAL | 声明事务隔离级别的生效范围,默认为空。
|
| READ ONLY | READ WRITE | 指定事务的读写模式。 |
| READ UNCOMMITED | 指定事务隔离级别为读未提交。 说明 当前版本暂不支持将事务隔离级别设置为读未提交。 |
| READ COMMITED | 指定事务隔离级别为读已提交。 |
| REPEATABLE READ | 指定事务隔离级别为可重复读。 |
| SERIALIZABLE | 指定事务隔离级别为可串行化。 说明 OceanBase 数据库不支持将 sys 租户的事务隔离级别设置为可串行化,这是由于不能在 sys 租户开启全局时间戳(GTS)。 |
示例
设置当前会话中下个事务的事务隔离级别为读已提交。
obclient> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;设置当前会话的事务隔离级别为可重复读。
obclient> SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;