TOP比較データ> はじめに
OSS評価手法
オープンソースソフトウェアの性能・信頼性評価手法

第7回:大規模データベースにおけるPostgreSQLの性能評価
著者:SRA  松田 亮一   2005/6/27
1   2  3  4  次のページ
はじめに

   大規模なデータ環境におけるオープンソースデータベースの性能評価として、再実行可能な共通手順の作成および、その手順に基づく測定と評価を実施した。実施した内容は次の2つである。
  • OSDL-DBT-3を使った検索性能の測定
  • pgbenchを使った運用性能の測定

   手順および結果は、「DB層の評価」報告書(以下、報告書)としてIPA(独立行政法人情報処理推進機構)のWebサイトで公開されている。報告書は具体的かつ詳細に記述してあるが、本記事はその要約というだけではなく、報告書を読み進めるためのガイド役となるように記述した。

   なお、PostgreSQLについては、読者に前提知識があるものとして詳細は記述しない。適宜、マニュアル等を参照されたい。


DBT-3による検索性能の測定

   一般的にベンチマークというと、SQLを同時に実行するユーザ数を増やすといった高負荷時の性能測定が思い浮かぶだろう。そういった性能測定にはDBT-1が適しており、前回前々回の記事に掲載されているのでそちらを参照されたい。

   本記事で説明するDBT-3は、意志決定支援システム(DSS:Decision Support System)環境における性能測定を行うツールであり、TPC-Hの簡易版である。データ量の多い大規模なデータベースにおいて、サブクエリーなどを含む複雑なSQLの実行性能が測定できる。


DBT-3とは

   データベースのパフォーマンスチューニングでは、通常はインデックスとキャッシュの設定から確認する。検索対象の行数やテーブルの行数にもよるが、全行を読み取るシーケンシャルスキャンよりも、インデックススキャンの方が圧倒的に速い。また、一度読み取ったデータを再び読み取るような場合に、キャッシュに格納されていればディスクアクセスの必要がないので、かなり速くなる。

   しかし、インデックスが効果的に使えないケースもある。具体的には表1に示すような集約クエリーや部分一致検索といった、例えカラムにインデックスが設定してあっても全行検索になってしまうクエリーの場合である。

集約クエリー SELECT AVG(カラム) FROM テーブル;
部分一致検索 SELECT * FROM テーブル WHERE カラム LIKE '%キーワード%';

表1:インデックスが使えないクエリー

   また、キャッシュが効果的に使えないケースとは、データベースの規模が大きくて、メモリに入りきらずにキャッシュからすぐに溢れ出てしまう場合である。

   このようなケースが発生するのは、キャッシュが効果的に使えないほど大規模なデータベースにおいて、インデックスが効果的に使えないくらいに複雑なクエリーの実行が要求される場合である。

   そのような場合のひとつとして、意志決定支援システム環境がある。そして、意志決定支援システム環境におけるベンチマークを行う物としてTPC-Hがあり、それを簡略化した物がOSDL-DBT-3である。

   DBT-3はTPC-Hを簡略化した物であり、測定結果の公開などの自由度も高いが、DBT-3の測定結果はTPC-Hとは無関係であり、比較することはできない点に注意が必要である。


DBT-3のテーブル構成とデータ量

   テーブル構成と投入するデータ量についてはTPC-Hの仕様で規定されており、DBT-3はそれに準拠している。データ量はスケールファクターという単位で指定でき、それがデータベースの規模となる。各テーブルに投入するデータの行数は、スケールファクターを基準にして決定される。図1に、テーブル構造およびテーブル毎の行数を示す。

テーブル構造と行数
図1:テーブル構造と行数
(画像をクリックすると別ウィンドウに拡大図を表示します)

   投入するデータは、テキストファイルとして作成される。そのテキストファイルのサイズが、およそ「スケールファクター×1GB」となる。PostgreSQLの場合は、テキストファイルのデータを投入すると、データベースクラスタのディスク使用量はおよそ4倍を消費することになる。

   例えば、36GBのディスクをデータベースクラスタ専用に割り当てた場合は、ファイルシステムやVACUUM対象のゴミ領域の見積もりによっても異なるが、スケールファクターとして8までを指定できると計算できる。DBT-3を実行する際には考慮して頂きたい。

1   2  3  4  次のページ

資料紹介
「OSSの性能・信頼性評価/障害解析ツール開発」報告書

本記事は、OSS推進フォーラム 開発基盤ワーキンググループによって公開されている「OSSの性能・信頼性評価/障害解析ツール開発」報告書を基に記事を掲載しています。報告書には、本記事で紹介した評価手法の詳細な手順、評価結果、考察が記載されています。
Javaアプリケーション層の評価、DB層の評価、OS層の評価の各報告書や付録、障害解析ツール開発に関する各報告書などが、OSS推進フォーラム 開発基盤ワーキンググループのホームページにて公開されています。

■「DB層の評価」報告書(PDF形式/1.68MB)
http://www.ipa.go.jp/software/open/forum/Contents/DevInfraWG/db.pdf

■日本OSS推進フォーラム・開発基盤ワーキンググループホームページ
http://www.ipa.go.jp/software/open/forum/DevInfraWG.html
株式会社SRA 松田 亮一
著者プロフィール
株式会社SRA  松田 亮一
Smalltakerを目指すべく中途入社。現在はPostgreSQL+Javaに関するサポート/コンサル/セミナー講師などを業務としている。また、The Seasar Projectコミッタ、Jun for Java Projectコミッタとして、OSS活動を行っている。


INDEX
第7回:大規模データベースにおけるPostgreSQLの性能評価
はじめに
  DBT-3のクエリー
  DBT-3を実行した結果
  pgbenchを使った運用性能の測定