PolarDB802版本 事务嵌套配置是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 PolarDB 8.0.2 版本中,事务嵌套的配置和行为主要受到事务控制命令的限制以及事务管理规则的影响。以下是关于事务嵌套配置的具体说明:
在 PolarDB 中,事务控制命令(如 COMMIT
和 ROLLBACK
)只能在特定的上下文中使用: - 顶层调用:事务控制命令可以在顶层调用的 CALL
或 DO
命令中执行。 - 嵌套调用:在嵌套调用中,只有当调用栈中没有其他中间命令(如 SELECT
)时,事务控制命令才能生效。例如: - 如果调用栈是 CALL proc1()
→ CALL proc2()
→ CALL proc3()
,那么 proc2
和 proc3
可以执行事务控制动作。 - 如果调用栈是 CALL proc1()
→ SELECT func2()
→ CALL proc3()
,则 proc3
无法执行事务控制,因为中间存在 SELECT
命令。
PolarDB 的事务嵌套行为遵循以下规则: - 自动开始新事务:当一个事务通过 COMMIT
或 ROLLBACK
结束后,系统会自动开始一个新的事务。因此,PolarDB 不需要显式的 START TRANSACTION
命令。 - 事务特征继承:如果需要新事务继承前一个事务的特征(如隔离级别),可以使用 COMMIT AND CHAIN
或 ROLLBACK AND CHAIN
命令。
在包含异常处理部分的 PL/SQL 块中,事务不能被结束。这意味着在异常处理逻辑中,无法通过 COMMIT
或 ROLLBACK
来显式控制事务的结束。
PolarDB 8.0.2 版本支持事务拆分功能,这在一定程度上影响了事务嵌套的行为: - 事务写前读拆分:默认情况下,事务中的读请求在写操作之前会被路由到只读节点。 - 事务全拆分:在满足一致性要求的前提下,事务中的所有读请求都可以被路由到只读节点,从而进一步减轻主节点的压力。 - 版本和使用限制:事务全拆分功能需要满足以下条件: - PolarDB MySQL 版 5.6、5.7 或 8.0.1 版本,且修订版本达到指定要求。 - 内核参数 loose_query_cache_type
必须设置为 OFF
(8.0.2 版本默认为 ON
,需重启生效)。 - 仅支持 读已提交(Read Committed) 隔离级别的会话。
在 PolarDB 8.0.2 版本中,事务嵌套的配置主要依赖于事务控制命令的上下文限制、事务特征继承机制以及事务拆分功能的支持。为了确保事务嵌套的正确性和性能优化,建议根据业务需求合理配置事务拆分功能,并注意相关版本和参数的限制。
阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。