PostgreSQL9.0の安定性と高い可用性を実証 アシストによるPostgreSQL検証セミナーレポート
OSSながら商用RDBMSに匹敵する機能を備えた『PostgreSQL』。株式会社アシストでは、企業システムへのOSS利用ニーズをとらえ、2009年からPostgreSQLの導入サポート事業を展開。本稿では、2011年2月18日に開催された同社主催のPostgreSQL検証セミナーの様子をレポートする。セミナーは、企業のIT担当者を中心とした77名の受講者に対し、PostgreSQLの基本性能をはじめ、実検証を元に信頼性や可用性を探る2つのセッションが披露された。
追記型固有の課題を克服し、1000同時セッションでも安定した動作
最初のセッションは「PostgreSQL 9.0の実力を探る」と題し、PostgreSQLの特徴やOracleとの相違点や、PostgreSQL固有機能に特化した性能評価、そしてRDBMSとしての基本性能評価などが発表された。
登壇者 株式会社アシスト データ基盤ソフトウェア事業部 高瀬洋子氏 |
商用データベースであるOracleとPostgreSQLを比較した場合に大きく違う点は、読み取り一貫性の実装方法。Oracleは、データベースの内容を変更する前の情報を専用の領域に保存する仕組み(スナップショット型)を持つのに対し、PostgreSQLは、データの更新・削除の場合でも以前の行データは削除されずに残す仕組み(追記型)を持つ。PostgreSQLの仕組みはシンプルであるが、表の領域が拡張してしまう。したがって、物理ファイルの肥大化やパフォーマンス劣化を防ぐために、定期的に不要な領域を再利用可能にするVACUUM処理が必要となる。
手動で定期的にVACUUM処理を行う面倒さは、バージョン8.1からの「自動VACUUM」機能により解消した。また、VACUUM処理中のユーザー側のパフォーマンス低下を抑えるため、処理を一定時間休止させる「遅延VACUUM」機能も用意されている。講演では、コールセンターシステムの疑似アプリケーションを例に、自動VACUUMと遅延VACUUMを組み合わせて、性能低下を抑制した実証結果が披露された。
また、追記型の特性は、PostgreSQLの索引を肥大化するという課題もある。これを克服すべくバージョン8.3から加わったのが、索引の更新を抑制するHOT(Heap-Only Tuples)機能だ。疑似アプリケーションを使ったHOTの効果検証結果では、同一時間内に発生する不要行数がHOT無し(バージョン8.2)が110万行であったのに対し、HOT有り(同9.0)の場合は20万行と大幅な改善が見られた。
追記型固有の機能が由来となる検証のあとは、RDBMSとしての基本性能評価が発表された。CPUコア数や同時セッション数を変化させ、平均TPSや平均応答時間を図ったスケーラービリティの検証、共有バッファを使ったチューニング結果、48時間の継続的な処理実行によるTPMの推移などが披露され、1000同時セッション前後でも安定した動作が確認された。これらの検証により、中規模のOLTP系システムへのPostgreSQL採用は可能と結論づけた。
図:CPUコア数を変化させ、平均TPSを確認する検証。同時1000セッションにおいてCPUコア数を増加させることにより、TPSが向上することを確認した。(クリックで拡大) |
図:CPUコア数と同時接続セッション数を変化させ、平均TPSとTPSの推移 トランザクションの平均応答時間を確認する検証。同時1000セッションにおいても安定 したTPS推移を確認した。(クリックで拡大) |