ALTER TABLE文の低速ロールバックの通知 - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
ft:locale
ja-JP
ft:lastEdition
2021-09-23
dita:mapPath
ja-JP/upb1600054424724.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1093
Product Category
Software
Teradata Vantage

Teradataはすべてのトランザクションが一体的に成功(または失敗)することを保証しているので、部分結果は得られません。トランザクションが失敗すると多くの場合は、Teradataは、トランザクションにおける、それまでのすべてのアクションをロールバックします。これに必要なのは、すべてのアクションの前状態をログに記録することで、これにより必要に応じて、アクションはあとから取り消すことができます。例えば、行を削除するとき、Teradataは行のコピーのログを最初に作成する必要があります。その結果トランザクションが失敗した場合に復元できます。

ただし、時には、ログが対象アクション(大きなテーブルの削除など)と比較して、はるかに高いコストがかかることがあります。システムがこのテーブルを後から、ロールバックする必要がない場合は、単にすべてのテーブル データをまとめて解放できます。つまり単一のアクションでシリンダ全体の割り当てを解除します。この場合、Teradataはトランザクションの成功が確実になるまでアクションの実行を遅延します。実際、Teradataはトランザクションをコミットしてから、遅延アクションを実行します。

この特別なコミット後フェーズの間に、トランザクションは引き続き処理され、ロックが保持されていますが、アボートできません(すでにコミットされているため)。多くの場合、このコミット後フェーズはすぐに終了し、認識できません。

この例外はALTER TABLE文です。テーブルの列を追加または削除するために使用するとき、時間がかかることがあります。ALTER TABLEでは、テーブルの各行が再構築されることが必要で、したがって、コストのかかる処理です。これは大きなテーブルでは数時間かかることがあり、Teradataが使用する、高度に最適化した、ブロック指向方式を使っている場合でも同じです。

ALTER TABLE文のロールバックに非常に時間がかかっていることをユーザーが認識したが、アボートできないときは、システムはアボートを延期しており、完了することが必要になります。