暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

OceanBase系统架构事务控制概述

2024-01-25
582

事务的整个生命周期通常包括开启事务、执行查询和 DML 语句,结束事务等过程。其中,开启事务可以通过 BEGIN、START TRANSACTION 等语句显式开启,也可以通过 DML 语句隐式开启。结束事务通常有两种方式,通过 COMMIT 语句提交事务或者通过 ROLLBACK 语句回滚事务。此外,在一个活跃事务中执行 DDL 语句也会导致隐式地提交事务。

在事务内部可以创建 Savepoint,它标记了事务内部的一个点,您可以在事务后续的执行过程中通过 ROLLBACK TO SAVEPOINT 语句回滚到该点。更多 Savepoint 相关信息请参见 Savepoint

事务大小

OceanBase 数据库 V2.x 版本上单个事务大小有限制,通常是 100M。事务的大小与两个配置项有关,分别是租户级配置项 _tenant_max_trx_size 和集群级配置项 _max_trx_size_tenant_max_trx_size 优先生效。

OceanBase 数据库 V3.x 及后续版本因支持了大事务,不再受此限制。

语句超时与事务超时

系统变量 ob_query_timeout 控制着语句执行时间的上限,语句执行时间超过此值会给应用返回语句超时的错误,错误码为 -6212,并回滚语句,通常该值默认为 10s

系统变量 ob_trx_timeout 控制着事务超时时间,事务执行时间超过此值会给应用返回事务超时的错误,错误码为 -6210,此时需要应用发起 ROLLBACK 语句回滚该事务。

系统变量 ob_trx_idle_timeout 表示 Session上一个事务处于的 IDLE 状态的最长时间,即长时间没有 DML 语句或结束该事务,则超过该时间值后,事务会自动回滚,再执行 DML 语句会给应用返回错误码 -6224,应用需要发起 ROLLBACK 语句清理 Session 状态。

事务查询

虚拟表 __all_virtual_trans_stat 可用于查询系统中当前所有的活跃事务。有关活跃事务的详细信息请参见 活跃事务

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论