3番目となる1サーバ多クライアントでは、クライアントの数を増やして並列に処理させるということをやっているが、処理するレコードの数は同じく10万レコードだ。このテストケースでは、MySQL内部のストレージエンジンの違いからMyISAM、InnoDB、InnoDB 5.1、PostgreSQL 8.0、PostgreSQL 8.1、PostgreSQL 8.2――という6つで比較。それぞれで、クライアントの数を0から500に増やしていく際に、その処理時間を計測するというテストだ。データの形は、単体テストや1クライアント1サーバと同じように64_8、1024_128、1024_8を用いている。
64_8のINSERTでは、MyISAMはあまり速くないものの、InnoDBでかなり速くなってきている。しかしクライアント数が100から200になるところでは、性能が非常に遅くなるという。これがInnoDB 5.1では、クライアントの数が増えてくると、むしろ性能を上げるという結果だ。こうしたことから、同氏は「InnoDB 5.1を搭載するMySQLは、クライアントの数が多い方に設計されていることがわかる」と説明している。
しかし同じ64_8でPostgreSQLを見ると、クライアントが100〜200を超えるところからPostgreSQLの方がむしろ速くなるという結果だ。「クライアントが増えるとMySQLは性能が落ちるが、PostgreSQLはそれほど性能が落ちることがない」。
1サーバ多クライアントの1024_128のINSERTでは、MySQLは(MyISAMも含めて)全般的に速いという結果だ。PostgreSQLはクライアントが200台を超えるところから性能が落ちてしまう。これはPostgreSQL 8.0、PostgreSQL 8.1のプログラム上の問題なのだが、「8.2では問題が改善されている」という。そして1024_8では、MyISAMはあまり性能が良くならずに、PostgreSQLでは全体として、性能はそれほど変わらないという結果だ。
1クライアント多サーバのSELECTでは総じて「PostgreSQLにとっていい結果になっている」。64_8のケースでは、PostgreSQL 8.2が一番性能がいい。対するMySQLはどれも傾向が変わっていない。このことから同氏は「PostgreSQLは、8.0よりも8.1、8.1よりも8.2と順当に性能が上がってきている」と語っている。
1024_128のケースでは、MySQLが遅いのに対して、PostgreSQLが速いという結果だ。1024_8のケースは64_8と似たような傾向を示している。
ベンチマークの4番目になるシナリオテストは、単純なSELECTを処理するのではなく、複雑なSELECTを処理するというものだ。
たとえば「TABLEを2つ結合して」から数件SELECTするというケースでは、PostgreSQLが遅いのに対して、MySQLは「割と速い」という結果が出ている。これが「TABLEを3つ結合して」から数件SELECTするというケースの場合、PostgreSQLは全体的に遅い。だが「TABLEを4つ結合してから」数件SELECTするというケースでは、「PostgreSQLが圧倒的に速い」となっている。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス