# 49.10.对逻辑解码的两阶段提交支持

使用基本输出插件回调(例如。,开始,改变,承诺信息_cb)两阶段提交命令,如准备交易,做好准备准备回滚没有解码。而准备交易被忽视了,做好准备被解码为犯罪准备回滚被解码为回降.

为了支持两阶段命令流,输出插件需要提供额外的回调。需要多个两阶段提交回调(开始准备, 准备, 提交_准备_cb, 回滚\u准备\u cb流_准备_cb)还有一个可选的回调(过滤器\u准备\u cb).

如果提供了用于解码两阶段提交命令的输出插件回调,则准备交易,对该事务的更改进行解码,并传递给输出插件,然后准备调用回调。这与基本解码设置不同,在基本解码设置中,只有在提交事务时才会将更改传递给输出插件。准备好的事务的开始由开始准备回拨。

当使用准备回滚,然后回滚\u准备\u cb调用回调,并在使用做好准备,然后提交_准备_cb调用回调。

可选地,输出插件可以通过过滤器\u准备\u cb分两个阶段仅解码特定事务。这可以通过计算机上的模式匹配来实现*吉德或者通过使用希德*.

想要解码准备好的交易的用户需要注意以下几点:

  • 如果准备好的事务已锁定[使用者]然后,目录表可以阻止,直到提交主事务。

  • 如果准备好的事务已锁定,使用此功能构建分布式两阶段提交的逻辑复制解决方案可能会死锁[使用者]只提供目录表。为了避免这种情况,用户必须避免在目录表上使用锁(例如显式在这种交易中。看见第49.8.2节详细信息。