PostgreSQLチューニング実践テクニック 3

適切なFSMのサイズ

適切なFSMのサイズ

   FSMを十分大きくすれば安心だと思うかもしれませんが、むやみにFSMのサイズを増やすと、FSMを検索するオーバーヘッドのためにかえってパ フォーマンスが低下します。10000程度なら問題ありませんが、数十万まで増やすとCPUの性能が低い場合はパフォーマンスへの悪影響が目立ってきま す。FSMは10000程度でも足りるように、VACUUMの頻度を決めていく方法がお勧めです。

   また、更新の量によっても必要なFSMの量は変化するので、運用していくうちに一度決めたFSMやVACUUM頻度が実情に合わなくなることもあり ます。できれば1日に1回程度「vacummdb -a -v」を実行し、FSMが足りているかどうか確認しましょう。FSMが不足している場合は、VACUUM FULLを実行して回収されなくなっている不要領域を解消し、FSMやVACUUM間隔の設定を見直します。

定期的にテーブル指定なしのVACUUMを実行する

   VACUUM はテーブルを指定して実行できるため、更新頻度の高いテーブルのみを指定すれば効率的なVACUUMが可能です。しかし、ここに落とし穴があります。

   PostgreSQLにはユーザーから見えない「システムカタログ」という特別なテーブルがありますが、これらのテーブルもVACUUMが必要とい う点では普通のテーブルとまったく同じです。システムカタログの更新頻度は比較的少ないのですが、テーブルの作成や消去を頻繁に行うと一部のシステムカタ ログにはかなり不要領域が生じます。また、一時テーブルを使っている場合もシステムカタログに不要領域ができてしまうので注意が必要です。

   システムカタログのVACUUMはテーブル指定のないVACUUMによってのみ行われます。したがって、定期的にテーブル指定のないVACUUMを実行する必要があります。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る