行移行とは

データ更新時に発生する現象

行移行とは、データレコードを更新するときにブロック内の空き領域を使用してもデータブロック内に収まらず 実データの行断片(レコードピース)を、すべて、別のデータブロックへ引越している状態をさす。
移行先の ROWID を行ディレクトリに格納する線形リストで管理している。

※ 行移行は完全な移動ではないので ROWID は変更されていない点がポイント。
ROWID が変更されると、テーブル所有のすべてのインデックスの ROWID を更新しなければならない。
そのためテーブルのデータの更新だけに比べての数倍のコストが必要になる。

ROW MOVEMENT 指定によりパーティション移動を伴う更新の場合には格納先と同時に ROWID も変更される。
(インデックスの更新は、データの更新にくらべて、およそインデックス数 × 2 のコストが余計に必要)

行移行が発生しているレコードの読み込みに最低 2 ブロック必要になるので効率が悪い
空き領域は テーブルの PCTFREE (PCTUSED) パラメータ で管理されているので、そのチューニングを検討する。

 


行移行 関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター