reorgる
0.更新履歴
- 2002.05.15 新規作成
1.はじめに
このドキュメントでは,Sybaseのデータベースメンテナンスツール,reorgについて説明する.
2.reorgの目的と実行時期の目安
データベースの追加更新等を行うと,デバイス上に行連鎖(行移行)等により,パフォーマンスが悪くなる事がある.
reorgを行う事で,データベースデバイス内のオブジェクトの物理配置などが再配置され,パフォーマンスが向上することが期待できる.
- 多くの更新処理が行われ,結果ロー転送が発生しているため,無駄なI/Oが発生している.
- 無駄なI/Oが発生しているか否かは,稼動直後「」などで計測して,稼動前と後を比べればよいとおもう.
- データが入っていないのに,データベースの空き容量が少なくなっている場合.
- データの更新や削除後に出来た空白領域は,ある程度の連続空き領域が確保できていないと,再利用されないため,使っていないけどDiskFullみたいな状態になる.
- その他.(マニュアル参照)
誤解を恐れず簡単に言えば,「デフラグを行うのと同じような感じ」という事です.
reorgの実行が必要か否かは,optdiagコマンドを使って,調査する事が出来る.
3.reorgの機能と制約
パラメータ | 作業内容 |
---|---|
forwarded_rows | ロー転送の解消. |
reclaim_space | 更新削除した領域を整理して再利用できるように掃除する. |
compact | 上記2つを行う. |
rebuild | compactと同じ作業をして,さらにインデックスの再作成なども行う. |
- 基本的に,データベースに対する負荷が高いので,データベースをあまり使っていない時間帯に実行する.
- rebuild以外のパラメータの場合は
- 小さなトランザクションを多く動かして,ちょっとづつ実施できる.
- たとえば,timeオプションで実行する時間を指定して,1日5分だけ実行するなどを指定する.
- resumeオプションで,昨日の続きから行うとか指定できる.
- rebuildパラメータの場合
- 処理終了まで,排他ロックがかかる.
- クラスタードインデックスの削除と作成を行う.
- 再構築するテーブルとインデックスが現在使用している領域と同じくらいの空き領域(作業領域)が必要になる.
- datarows,datapagesロック方式を使用する.
- DBAかdboが実行できる.
- トランザクション中には実行できない.
なお,このコマンドは,ASE11.9.2以降には装備されていて,それ以前の物はわからない. 11.0.3にはついてない.
3.
参考資料
- PCTFREE
- Oracleの行移行(Sybaseでは「ロー転送」というみたい)について解説したものであるが,原理的にはSybaseでも同じハズなのでリンクしてみた.