今すぐできるPostgreSQLチューニング 3

常にI/O負荷が高いデフォルトテーブルスペース

常にI/O負荷が高いデフォルトテーブルスペース

   テーブルスペースにはデータベースオブジェクトが格納されるのですが、デフォルトテーブルスペースだけは特別で、データベースオブジェクトのほかに PostgreSQLの管理情報など様々な付随データが格納されます。その中でも重要なものがトランザクションログです。

   トランザクションログは第2回でも紹介しましたが、データベースのすべての更新内容をログとして保存し続けますので、データ量が非常に多いという特徴があります。

   このデータ量の多いトランザクションログがデフォルトテーブルスペースに格納されているわけですから、デフォルトテーブルスペースが載っているハードディスクはI/O負荷が常に高い状態となります。

シンプルな負荷分散ポリシーの例

   このようにデフォルトテーブルスペースはI/O負荷が常に高いので、パフォーマンスという面で考えれば、これ以上の負荷はできるだけ避けたいものです。

   このための具体的な方針として考えられるのが、「デフォルトテーブルスペースにはできるだけデータベースを作成しない」ことです。

   具体的にはサーバマシンにハードディスクを増設してその上に新しいテーブルスペースを作成し、これを新たなデータベース用のテーブルスペースとして用いるのです。

   こうすると、トランザクションログのためのI/O負荷はデフォルトテーブルスペースが載っているハードディスクに、データベースアクセスのためのI/O負荷は増設したハードディスクにと、難しいことを考えなくても簡単にI/O負荷の分散ができます。

   ちなみに上記の他にも、テーブルとインデックスを異なるハードディスク上に配置するなど、色々な負荷分散のバリエーションがあります。

   より完璧を目指すのであれば、できるだけ実際の使い方に即したベンチマーク試験を繰り返しながら最適な負荷分散パターンを見つけ出すことになります が、上記の負荷分散ポリシーでもシンプルながら一定の効果が得られますので、デフォルトの負荷分散ポリシーとしてはお勧めです。

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

人気記事トップ10

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