はじめに
データを全件洗い変えるバッチを作ろうと思います。
処理は『全件削除 ⇒ 全件登録』のようにするのですが、全権削除をTRUNCATEにするかDELETEにするか調べてみました。
TRUNCATEとDELETEの比較
特徴 | TRUNCATE | DELETE |
---|---|---|
条件指定の可否 | 不可 | 可能 |
処理速度 | 速い | 遅い |
ロールバック | 不可 | 可能 |
ログサイズ | 大きくなりにくい | 大きくなりやすい |
トリガー | 起動しない | 起動する |
トランザクションを張らない方が良いケース
1. 日中帯に長時間実行する場合
数百万件以上のデータを一括更新すると、コミットまでロックされます。
つまり、システムを長時間ロックするリスクがあります。
2. 失敗しても再実行すれば良い場合
失敗した場合に元のデータに戻す必要がないのであれば、トランザクションは不要です。