Logo
事务

事务 #

语法描述类型
ALTER TRANSACTION RULE更新事务规则配置RAL
SHOW TRANSACTION RULE查询事务规则配置RAL

1. 更新事务规则配置 #

alterTransactionRule
    : ALTER TRANSACTION RULE transactionRuleDefinition
    ;

transactionRuleDefinition
    : ( DEFAULT = defaultType (, providerDefinition)? )
    ;

providerDefinition
    : TYPE ( NAME = providerName (, propertiesDefinition)? )
    ;

参数说明

  • DEFAULT:默认事务类型,支持 LOCAL、XA、BASE;
  • NAME:事务管理器名称,支持 Atomikos、Narayana

示例

-- 修改事务类型为 LOCAL
ALTER TRANSACTION RULE (DEFAULT='LOCAL');

-- 修改事务类型为 XA,事务管理器名称为 Narayana,指定 JDBC 方式存储事务恢复日志。需要提前建立好对应的数据库,比如下面的 jbossts 数据库。
ALTER TRANSACTION RULE(DEFAULT='XA', TYPE(NAME='Narayana', PROPERTIES("recoveryStoreUser"="root","recoveryStoreDataSource"="com.mysql.jdbc.jdbc2.optional.MysqlDataSource","recoveryStoreUrl"="jdbc:mysql://localhost:3306/jbossts","recoveryStorePassword"="root")));

-- MySQL8 作为事务恢复日志存储,指定 "recoveryStoreDataSource"="com.mysql.cj.jdbc.MysqlDataSource"
ALTER TRANSACTION RULE(DEFAULT='XA', TYPE(NAME='Narayana', PROPERTIES("recoveryStoreUser"="root","recoveryStoreDataSource"="com.mysql.cj.jdbc.MysqlDataSource","recoveryStoreUrl"="jdbc:mysql://localhost:3306/jbossts","recoveryStorePassword"="root")));

-- 修改事务类型为 XA,事务管理器名称为 Narayana,使用文件方式存储事务恢复日志,在集群模式下,使用文件方式存储 XA Recovery 信息会导致 Proxy 实例之间无法共享事务恢复日志,因此不推荐使用文件方式存储 XA Recovery 信息。
ALTER TRANSACTION RULE(DEFAULT='XA', TYPE(NAME='Narayana', PROPERTIES("recoveryStoreType"="File")));

-- 修改 Narayana XA 事务的事务超时时间(单位秒),默认不配置为 180 秒。
ALTER TRANSACTION RULE(DEFAULT='XA', TYPE(NAME='Narayana', PROPERTIES("defaultTimeout"="60")));

2. 查询事务规则配置 #

SHOW TRANSACTION RULE

输出说明

说明
default_type默认事务类型
provider_type事务管理器类型
props事务管理器参数

示例

mysql> SHOW TRANSACTION RULE;
+--------------+---------------+-------+
| default_type | provider_type | props |
+--------------+---------------+-------+
| LOCAL        |               |       |
+--------------+---------------+-------+
1 row in set (0.07 sec)