DTM,全称Distributed Transaction Management,即分布式事务管理器,是Trafodion支持事务的重要组件部分。
DTM是一个进程,每个数据库节点一个,可以通过sqcheck查看到DTM进程,个数与节点数一致,如下输出,
[[email protected] ~]$ sqcheck
*** Checking Trafodion Environment ***
Checking if processes are up.
Checking attempt: 1; user specified max: 2. Execution time in seconds: 3.
The Trafodion environment is up!
Process Configured Actual Down
------- ---------- ------ ----
DTM 4 4
RMS 8 8
DcsMaster 1 1
DcsServer 4 4
mxosrvr 200 200
RestServer 1 1
。。。
DTM的主要特性包括:
- 采用OCC(Optimistic Concurrency Control)原理
(1) 读永远不会被阻塞
(2) 事务之间不会相互影响,一个正在处理的事务对另一个正在处理的事务不可见
(3) 冲突检测发生在commit阶段,当一个事务在commit的时候发现与另一个已提交的事务有冲突时,事务将会abort
(4) 对于事务冲突的问题,应用端需要增加retry重试机制 - 支持BEGIN WORK,COMMIT WORK,ROLLBACK WORK,SET TRANSACTION语法
(1) BEGIN WORK用于开启一个事务,若没有BEGIN WORK,SQL执行默认为AUTOCOMMIT模式 - 事务默认的隔离级别为读提交(READ COMMITTED)
- 支持多个ESP进程在同一个事务中运行
- 在发生region server、transaction manager或节点失效时,具有事务自动恢复机制
- HBase发生region拆分或rebalance均衡时保证事务的一致性
DTM架构可以用以下两张图片概括,