データ基盤

CDC(変更データキャプチャ)とは|4時間ごとに見に行くと、5480回ぶんの中間が消えた

CDC(変更データキャプチャ)は何を拾うのか定期的に見に行く方式では何が落ちるのか間隔を短くすれば解決するのか

1日2万回の更新を、4時間ごとに見に行って拾いました。取れたのは69.1%です。

落ちたのは5480回ぶんの中間の状態と、974回の削除でした。削除は間隔を変えても取れません。

この記事の要点

  • 1分ごとでも中間を23回落とす
  • 4時間ごとなら5480回
  • 削除は974回すべて落ちる
  • 削除の取りこぼしは間隔によらない

4時間ごとに見に行くと、5480回ぶんの中間が消えた

定期的に見に行く方式は、最後の状態しか取れません。途中の変化と、消えた行は残りません。

CDC(変更データキャプチャ)を、定期的に元の表を見に行く形で作ることがあります。何が落ちるのかを実際に数えました。

レコード5000件に対し、1日に2万回の更新が起きる場を作りました。そのうち974回は削除です。

見に行く方式は「前回より後に更新された行」を拾います。同じ区間に同じ行が複数回変われば、最後の状態だけが取れます。

間隔を動かす

text
レコード 5000件。1日に 20000回の更新があり、うち 974回は削除

見に行く間隔  拾えた変更  取りこぼした中間  削除の取りこぼし  拾えた割合
1分                19006件               23件              974件       95.0%
5分                18920件              115件              974件       94.6%
15分               18667件              385件              974件       93.3%
60分               17535件             1585件              974件       87.7%
240分              13827件             5480件              974件       69.1%

4時間ごとだと、拾えたのは69.1%です。中間の状態が5480回ぶん残りません。

1分ごとまで縮めても23回は落ちます。同じ分の中で2回変わった行があるためです。

削除は間隔で解決しない

右から2列目を見てください。削除の取りこぼしは974回のままで、どの間隔でも変わりません。

更新時刻を見て拾う方式では、行そのものが消えたことを知る手がかりがないからです。

出典はログから拾う方式について元の表に対して行われた挿入や削除のそれぞれが、変更表の中の1行として現れると説明しています。削除も1行として残ります。

間隔を縮めれば中間は減る。削除は減らない。

548001分5分15分60分240分取りこぼした中間削除の取りこぼし1日2万回の更新での計算。うち974回が削除にあたる。
図1 ── 見に行く間隔と取りこぼし
出典Microsoft Learn「What is change data capture (CDC)?」2026-08-18 確認
Each insert or delete operation that is applied to a source table appears as a single row within the change table.
原文Microsoft Learn「What is change data capture (CDC)?」 この内容の有効期限2027-02-18

ログから拾えば、順序も削除も残る

元の仕組みが持っている記録を読みます。表を見に行くのではなく、起きた操作の並びを読む形です。

CDC(変更データキャプチャ)の本来の作りは、データベースが持っている記録を読むものです。

出典もこの点を変更データキャプチャにとっての変更データの出どころは、トランザクションログであると明記しています。

何が違うのか

  1. 順序が残る。起きた順に並んでいる
  2. 中間が残る。同じ行の2回目の変更も別の記録になる
  3. 削除が残る。消えたという操作そのものが記録される
  4. 元の表に負荷をかけない。表を読みに行かない

前の節で落ちた2種類が、どちらもここで解決します。取りこぼしの原因が、方式そのものにあったということです。

遅れは残る

ログから拾っても、即座に届くわけではありません。記録を読み取って書き出すまでの時間がかかります。

ただし、この遅れは取りこぼしではありません。遅れて全部届くのと、すぐ届くが一部落ちるのは別の話です。

使える条件

ログを読む方式には条件があります。元のシステムがその記録を持っていて、読ませてくれることです。

外部の仕組みや、権限が絞られた相手では使えないことがあります。その場合は見に行く方式しか選べません

出典Microsoft Learn「What is change data capture (CDC)?」2026-08-18 確認
The source of change data for change data capture is the SQL Server transaction log.
原文Microsoft Learn「What is change data capture (CDC)?」 この内容の有効期限2027-02-18

更新は、前と後の2行として残る

1回の更新が1行になるとは限りません。受け取る側で差を判断できるように、前後の両方が記録されます。

CDC(変更データキャプチャ)で受け取る記録の形は、操作の種類によって違います

出典は記録される対象を追跡している元の表に挿入・更新・削除が適用されると、それらの変更を記述する項目がログへ追加されると説明しています。

操作ごとの形

  1. 挿入。入れたあとの値が1行
  2. 削除。消す前の値が1行
  3. 更新。変える前と変えたあとで2行
  4. 構造の変更。列が増減したという記録

3番目が扱いを分けます。1回の更新で2行来るので、そのまま数えると件数が合いません。

前後の両方があるのは、受け取る側で何が変わったかを判断できるようにするためです。片方だけでは差が出せません。

保持の期間を決める

記録は放っておくと積み上がります。保持の期間を決めて、それより古いものは消します

期間が短すぎると、受け取る側が止まっているあいだに必要な記録が消えます。止まってよい時間の上限にもなります。

受け取ったあとの反映そのものは同期パイプラインの記事で扱っています。反映の遅れが結果にどう出るかを測っています。

取りこぼしの種類は、方式を選んだ時点で決まる。

充足 2 / 4削除を拾う必要があるか確かめている見に行く方式では、削除は間隔によらず974回すべて落ちる同じ行の更新頻度を数えている間隔内に2回変わると、中間の状態が残らない間隔を短くすれば足りると考えている1分ごとでも中間が23回落ち、削除は1件も拾えない更新を1件として数えている更新は前と後の2行として記録されるため、件数が合わないレコード5000件・1日2万回の更新での計算にもとづく。
図2 ── 選ぶ前の点検項目
余談 この計測での注意

更新は時間に対して一様に起きるという置き方です。実際には夜間の一括処理などで集中するので、その時間帯の取りこぼしはここより多くなります。削除の割合も5%として置いたものです。ここで見せているのは、見に行く方式が構造として中間と削除を落とすという関係です。

出典Microsoft Learn「What is change data capture (CDC)?」2026-08-18 確認
As inserts, updates, and deletes are applied to tracked source tables, entries that describe those changes are added to the log.
原文Microsoft Learn「What is change data capture (CDC)?」 この内容の有効期限2027-02-18

よくある質問

定期的に見に行く方式では何が落ちますか
同じ行が間隔内に複数回変わったときの中間と、削除された行です。削除は行そのものが消えるため拾えません。
間隔を短くすれば解決しますか
中間の取りこぼしは減ります。この計測では4時間で5480回、1分でも23回残りました。削除は間隔によらず落ちます。
ログから拾うと何が変わりますか
起きた順にすべての操作が記録されるため、中間も削除も残ります。取りこぼしの種類が消えます。
更新は1件として記録されますか
更新は前と後の2行として記録されます。何がどう変わったかを、受け取る側で判断できるようにするためです。

まとめ

  • 元のデータの変更を拾い続ける仕組み
  • 見に行く方式は中間を落とす
  • 削除は間隔によらず落ちる
  • ログから拾えば順に全部残る

今日から始められること

  1. 同じ行が1日に何回更新されるかを数える
  2. 削除がどれくらい起きるかを数える
  3. いまの間隔で落ちる件数を計算する
  4. 落ちて困るかどうかで方式を選ぶ

実務で組んだCDC(変更データキャプチャ)のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る