UpdateオペレータとStream オペレータの両方ともデータベース内のデータ更新に使用できますが、以下の点に注意してください。
- Updateオペレータは、対話型のデータの読み取りと書き込みが同時に実行されないように、更新中のターゲット テーブルをロックします。
- Stream オペレータは、対話型のデータの読み取りと書き込みが同時に実行できるように、更新中のターゲット テーブルをロックしません。
Streamオペレータのこの機能により、他のユーザーからのテーブルへのアクセスが多い場合でも更新操作を実行できます。 他のTeradata PTオペレータと同様に、Streamオペレータは複数のセッション、および複数のオペレータ インスタンスを使用して複数のデータ ソースから同時にデータを処理できます。
LoadオペレータやUpdateオペレータとは異なり、Streamオペレータはデータベースへのアクセスに独自のプロトコルを使用しません。 代わりに、Teradata SQLプロトコルを使用します。
パラメータ | Updateオペレータ | Streamオペレータ |
---|---|---|
ボリューム | 多数の行に対して大量の更新を実行する。 | 低ボリュームのリアルタイム更新に向く。 |
パフォーマンス | 更新するボリュームが多い場合のパフォーマンスが高い。 | 複文リクエストでのパフォーマンスが高い。 |
ロックの粒度 | ブロック レベルでのバルク更新。 すべてのテーブルをロックする必要があるため、完了までアクセスできない。 ロード ジョブが完了するまで行にアクセスできない。 |
更新中、ターゲット テーブルは一部のみがロックされる。 更新が行なわれる行は、標準SQLロック プロトコルを使用して個別にロックされるため、同時に他のユーザーによる読み込みや書き込みが可能。 トランザクションが完了すると、それらの行は即座にアクセスできるようになる。 |
テーブルの数 | 最高で5個。 | 最高で127個。 |
タイミング | 多数のトランザクションをバッチ処理してまとめて実行するため、通常はリアルタイムよりもかなり遅い。 | ロードはほぼリアルタイムで変更される。 |
同時操作 | APPLY-SELECT文で指定された各Export、Load、またはUpdateオペレータによって接続されているデータベースに対して、ロードスロットが1つ必要。 | データベース ロード スロットは不要。 |
インスタンス | 複数の並列インスタンスによって高いパフォーマンスの更新が可能。 | 複数の並列インスタンスを使用することにより、場合によってはパフォーマンスの向上が可能。 |
順序 | データは必ず順番に処理される(ただし、リアルタイムではない)。 | 順序付けが必要な場合は、ROBUSTモードを使用する必要がある。 |
DML文 | 実際のDML文を使用する。 | 実際のDMLコマンドではなく、テーブルを変更するマクロを使用する。 |
作業テーブル | ターゲット テーブルごとに作業テーブルが1つずつ必要。 | 作業テーブルは不要。 |