2.2.4.8.3. TOAST 化された値

PostgreSQL ではページサイズにハード制限があります。つまり、ca より大きい値。8 KB は TOAST ストレージ を使用して保存する必要があります。これは、TOAST メカニズムを使用して保存され、テーブルのレプリカ ID の一部でない限り、変更されていない値がメッセージに含まれていないため、データベースからのレプリケーションメッセージに影響します。Debezium が不足している値を直接データベースから読み取る安全な方法はありません。これにより競合状態が発生する可能性があります。そのため、Debezium は以下のルールに従って、Toasted の値を処理します。

  • REPLICA IDENTITY FULL: TOAST 列値を持つテーブルは、他の列として変更イベントの before および after ブロックの一部になります。
  • REPLICA IDENTITY DEFAULT: データベースから UPDATE イベントを受信すると、レプリカ ID の一部ではない変更されていない TOAST 列値は、そのイベントの一部になりません。同様に、DELETE イベントを受信すると、そのような TOAST 列は before ブロックの一部になりません。この場合、Debezium は列値を安全に提供できないため、設定オプション で定義されているプレースホルダー値を返します。これは、asted .value.placeholder です。
重要

Amazon RDS インスタンスに関連する特定の問題があります。wal2json プラグインは時間とともに進化し、帯域外から貼り付けられた値を提供するリリースがありました。Amazon は、PostgreSQL のバージョンごとに異なるバージョンのプラグインをサポートします。バージョンからバージョンへのマッピングを取得するには、Amazon の ドキュメント を参照してください。一貫性のある貼り付けられた値の処理には、以下を推奨します。

  • PostgreSQL 10+ インスタンス用の pgoutput プラグインの使用
  • slot.stream.params 設定オプションを使用して、古いバージョンの wal2json プラグインに include-unchanged-toast=0 を設定します。