タグ

2013年4月26日のブックマーク (2件)

  • shrink space - niwanosの日記

    大量のDELETEを走らせたのに表領域が解放されない場合は ALTER TABLE テーブル名 SHRINK SPACE; で10gからは postgresのバキューム的なことが出来ます。 ただしテーブルの行が移動してもよいということをテーブル単位で指定しないとエラーが発生します。 ALTER TABLE テーブル名 ENABLE ROW MOVEMENT ; 試した結果、DELETEで削除された領域の予想バイト位は解放されてました。 ちなみに、9iまでだとテーブルDROPしてIMPORTし直す必要があるそうです。 毎日同じテーブルに対してDELETE、INSERTとかしてると歯抜け状態になりやすいと思われます。 Transactionテーブルであれば DELETE、INSERTではなくTRUNCATE、INSERT出来るように うまくPARTITIONINGしておくことが肝心です。 PA

    shrink space - niwanosの日記
  • 『[Oracle] ALTER TABLE ~ SHRINK SPACEによるセグメントの縮小』

    Oracle 9i 以前は、テーブルからデータを大量に削除した時などに、セグメントを縮小して空き領域を解放しようと思ったら、ALTER TABLE ~ MOVE コマンドなどを利用してテーブルを再構築するしかありませんでした。 ALTER TABLE テーブル名 MOVE TABLESPACE 表領域名; しかし、Oracle 10g から導入された ALTER TABLE ~ SHRINK SPACE コマンドを利用すれば、もっと手軽にセグメントの縮小を行うことができます。 ALTER TABLE テーブル名 SHRINK SPACE; MOVE と比較すると、SHRINK SPACE には以下のような利点があります。 オンライン中に実行できる MOVE の場合は表に排他ロックがかけられるが、SHRINK SPACE の場合は行排他ロックしかかけられない。 大量の作業領域を必要としない

    『[Oracle] ALTER TABLE ~ SHRINK SPACEによるセグメントの縮小』