|
|
1 2 次のページ
|
|
VACUUMを使いこなす |
VACUUMは他のデータベースにはないPostgreSQL固有のコマンドであり、使い方次第でPostgreSQLの性能を左右する重要な役割を持ちます。
PostgreSQLでは、削除や更新が行われても古い行は消えません。VACUUMコマンドは、このような古い行の中から、どのトランザクションからも参照されていない安全に再利用できる行を探して、FSM(Free Space Map)という共有メモリ上のデータ構造にその位置と大きさを記録します。追加や更新など、新しく行を追加する場合はまずFSMを検索して、新しいデータを保管するのに適当な大きさの行が見つかればそれが再利用されます(図3)。
図3:VACUUMと行の再利用
|
定期的にVACUUMを実行することにより、行が効率よく再利用されるようになります。これによって、テーブルの物理的な肥大化を抑え、データベースのパフォーマンスを維持できるわけです。
|
FSMのサイズを適切に設定する |
FSMの大きさはpostgresql.confのmax_fsm_pagesで指定します。
FSMの大きさが不十分であると、その情報をFSMに記録できない行が発生して、再利用できない行が残ってしまいます。この場合、徐々にデータベースクラスタのサイズが大きくなっていき、パフォーマンスが低下します。FSMが足りているかどうかは、全データベースに対してVACUUMを実行するとわかります(図4)。
|
$ vacuumdb -a -v
(中略)
INFO: free space map: 13 reLations, 1447 pages stored; 1808 total pages needed
DETAIL: ALLocated JSM size: 100 reLations + 1601 pages = 19KB shared memory.
VACUUM
|
図4:必要なFMSサイズの確認
|
図4を見ると「1808 total pages needed」とあり、必要なFSMは1808であることがわかります。一方、2行目(またはpostgresql.confのmax_fsm_pagesパラメータ)を見ると、実際には1601しかFSMがありません。したがって、この例ではFSMが不足しています。これでは、再利用できない領域が生じてしまうので、次のような対策が必要です。
|
- max_fsm_pagesを増やして(この例では1808以上)にしてVACUUMを実行する
- VACUUM FULLを実行して空き領域をなくしてから、もっと頻繁にVACUUMを実行するようにする
|
|
1 2 次のページ
|
書籍紹介 まるごと PostgreSQL! Vol.1
日本での市場シェアNo.1(オープンソースRDBMS部門)データベースソフトPostgreSQLの最新情報を、開発メンバーを含む豪華執筆陣が多面的かつ詳細に解説します。PostgreSQL用クラスタリング/レプリケーションソフト、PostgreSQL⇔Oracle移行、PostgreSQLによる大規模サイト構築法、新バージョンPostgreSQL 8.0先行レビュー、PostgreSQL用.NETデータプロバイダ等々、他では読めない貴重な記事が満載です。
発売日:2004/12/08発売
定価:\1,890(本体 \1,800+税)
|
|
|
著者プロフィール
石井達夫(ISHII, Tatsuo)
PostgreSQLの開発者、エバンジェリスト。本業でもPostgreSQLによるビジネスに関わっている。著書に「PostgreSQL完全攻略ガイド」「PHPxPostgreSQLで作る最強Webシステム」(技術評論社)などがある。
|
|
|
|