
Add Column - 日本エクセム株式会社 Oracle 技術情報
基本情報
Oracle11gでは、テーブルにカラムを追加しながらDefault Valueを設定できます。この場合、一般的に考えて、多くのデータを持つテーブルにカラムを追加してDefault valueまでを指定をすることで、列を追加するoverheadとdefault valueを入れながら発生するupdateのoverheadを考えることができます。しかし、11gでは、既存のデータの更新ではなく、メタデータに格納されているdefault value値を嫁にとるようになりました。
テスト
テストを通じてその機能について調べてみましょう。
テストに使用したスクリプト
次は、ブロックのダンプ内容です。
ここで簡単に説明をすると、ccという値はカラム数を示します。これにより、現在のすべてのrowがカラムカウントが3であることを知ることができます。
テーブルにカラムを追加した後、同じブロックのダンプを実行すると、次のような結果を確認することができます。
カラムを追加する前、または追加した後やカラム数は変化がありません。
上記のクエリを介して、メタデータを照会してみると、カラムが4であることを確認することができます。
テーブルを参照すると、通常のデータが表示されます。
つまり、追加されたカラムにDefault値を与えることができるので、実際の物理的なスペースを割り当てた後、データを入れる方法ではなく、Disk I/Oのoverheadを減らすために、メタデータのみが変更された後、SELECTクエリの値をリターンしていることがわかります。
その後、rowを更新すると、どのようにされていることを確認してましょう。
ブロックのダンプを実行した後の内容を確認してみると、物理的な空間に変化があることを確認することができます。
物理的なスペースの変化が発生しました。
新しいデータをinsertし、最後に追加されたカラムにDefault valueを使用するようにしてみましょう。
そのブロックの最後のrowの内容を確認してみると、やはりカラム数が3であることを確認することができます。Nullが入る場合Default値に置き換えなければならないので不必要なブロックの変更を行わずにメタデータを使用するようにしています。