# 49.10.对逻辑解码的两阶段提交支持
使用基本输出插件回调(例如。,开始
,改变
,承诺
和信息_cb
)两阶段提交命令,如准备交易
,做好准备
和准备回滚
没有解码。而准备交易
被忽视了,做好准备
被解码为犯罪
和准备回滚
被解码为回降
.
为了支持两阶段命令流,输出插件需要提供额外的回调。需要多个两阶段提交回调(开始准备
, 准备
, 提交_准备_cb
, 回滚\u准备\u cb
和流_准备_cb
)还有一个可选的回调(过滤器\u准备\u cb
).
如果提供了用于解码两阶段提交命令的输出插件回调,则准备交易
,对该事务的更改进行解码,并传递给输出插件,然后准备
调用回调。这与基本解码设置不同,在基本解码设置中,只有在提交事务时才会将更改传递给输出插件。准备好的事务的开始由开始准备
回拨。
当使用准备回滚
,然后回滚\u准备\u cb
调用回调,并在使用做好准备
,然后提交_准备_cb
调用回调。
可选地,输出插件可以通过过滤器\u准备\u cb
分两个阶段仅解码特定事务。这可以通过计算机上的模式匹配来实现*吉德
或者通过使用希德
*.
想要解码准备好的交易的用户需要注意以下几点:
如果准备好的事务已锁定[使用者]然后,目录表可以阻止,直到提交主事务。
如果准备好的事务已锁定,使用此功能构建分布式两阶段提交的逻辑复制解决方案可能会死锁[使用者]只提供目录表。为了避免这种情况,用户必须避免在目录表上使用锁(例如显式
锁
在这种交易中。看见第49.8.2节详细信息。