本文介绍在 OceanBase 数据库关于事务的规范。
-
OB 3.x 版本对对大事务本身没有大小限制,但是要控制好并发量,防止内存使用激增。
-
对 where 子句中的 in 列表参数的个数不再限制。
-
在 OBServer 初始化时,对 memstore 的内存使用率达到 80% 时开启写入进行了限速:
alter system set writing_throttling_trigger_percentage = 80 TENANT = ALL;
注意
限速会限制 clog 回放速度,可能会影响转储的触发时机。
-
批量操作数据时,需要程序必须有中断处理能力,以及事务失败重试机制。
-
由于 OceanBase 的分布式事务采用两阶段提交的方式,需要事务有失败重试和事务状态未决检查执行状态的机制。
-
前端程序中禁止使用除
set names 以外的 set 语句,包括
set timezone,
set SQL_mode 和 s
et isolation_level 等类似命令。
-
当需要唯一的主键时,序列是非常有用,序列也能提供全局唯一且连续的整数。
-
限制会话的并发数。
如果一个租户有 n 个 CPU,通常该租户最多有
10*n 个用户会话是同时活动的,此后增加的每个额外的并发会话,在活跃之前将等待一个可用的工作线程。
-
开启自动提交事务,不推荐执行
set @@autocommit=xx,推荐使用
Connection.setAutoCommit(xx) 接口。
-
开启事务,不推荐执行
start transaction/begin,推荐使用
Connection.setAutoCommit(xx) 接口。
-
完结事务,不推荐执行
commit/rollback,推荐使用接口
Connection.commit()/Connection.rollback() 接口。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70026124/viewspace-2932849/
,如需转载,请注明出处,否则将追究法律责任。