TOPサーバ構築・運用> ベンチマーク試験内容
徹底比較!! PostgreSQL vs MySQL
徹底比較!! PostgreSQL vs MySQL

第5回:ベンチマーク試験による処理性能比較
著者:NTTデータ   藤塚 勤也   2006/6/6
前のページ  1  2  3  4  次のページ
ベンチマーク試験内容

   ベンチマーク試験用アプリケーションには「JDBCBench(注1)」を使用しました。
※注1:
JDBCBenchは、TPCベンチマーク試験の中のTPC-Bを参考にし、オフラインでのバッチ処理をモデル化したベンチマーク試験です。現在、TPC-Bベンチマーク試験自体は廃止されているものの、JDBCBenchはPostgreSQL/MySQLそれぞれのベンチマークツールとしてよく利用されている「pgbench」「mysqlbench」と同様の試験を行えます。

   ベンチマークテスト用のデータベースとしては、「branches」「tellers」「accounts」「history」の4つのテーブルを使用します。JDBCBenchは、この4つのテーブルに対して以下の5つのSQL文を1つのトランザクションとして実行します。

update accounts set abalance = abalance + 変数 where aid = 変数
select abalance from accounts where aid = 変数
update tellers set tbalance = tbalance + 変数 where tid = 変数
update branches set bbalance = bbalance + 変数 where bid = 変数
insert into history(tid,bid,aid,delta) values(変数,変数,変数,変数)

   指定された回数分だけこのトランザクションを実行し、その時の処理時間を計測します。そしてその処理時間を元に、TPS(トランザクション/秒)値を結果として出力します。

   またJDBCBenchは、このトランザクション処理を同時に実行するクライアント数を設定することができます。この同時実行クライアント数を大きな値に設定することにより、データベースサーバに大きな負荷をかけることができます。


測定内容

   ではJDBCBenchを使用して、今回実施した測定内容について解説します。

   まずデータベースですが、ベンチマーク試験に使用する4つのテーブルの初期レコード数を次の通り設定しました。

テーブル レコード数
branches 30
tellers 300
accounts 3,000,000
history 0

表3:各テーブルの初期レコード数

   そしてこの初期状態のデータベースに対して、同時実行クライアント数が「1、5、10、20、30、40、50、60、70、80、90」の時のTPS値を測定しました。各クライアントが実行するトランザクション数は、それぞれ1,000回としました。よってクライアント数が90の時は、90,000回のトランザクション処理が実行されることになります。

   また、PostgreSQLとMySQL+InnoDBエンジンのトランザクション分離レベルは、ともにリードコミッティドに設定しました。

   以上が今回実施したベンチマーク試験の測定内容です。この測定内容を以下の6種類のデータベース環境に対して実施し、TPS値を計測しました。

  • PostgreSQL(32bit環境)
  • PostgreSQL(64bit環境)
  • MySQL+MyISAM(32bit環境)
  • MySQL+MyISAM(64bit環境)
  • MySQL+InnoDB(32bit環境)
  • MySQL+InnoDB(64bit環境)

表4:TPS値を測定したベンチマーク

   なお、PostgreSQLのベンチマーク試験の場合に限り、TPS測定の前にフルVaccumとREINDEX処理を毎回実施しました。

前のページ  1  2  3  4  次のページ


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第5回:ベンチマーク試験による処理性能比較
  ベンチマーク試験
ベンチマーク試験内容
  32bit環境での結果
  MySQLにおける32bit環境結果と64bit環境結果の比較