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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
管理
Publication ID
B035-1093-170K-JPN
Language
日本語 (日本)

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

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

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

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

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