「PostgreSQLは遅い」は本当か?:OSSデータベース比較 - (page 3)

田中好伸(編集部)2007年04月12日 12時04分

バージョンアップで確実に性能が向上している

 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では全体として、性能はそれほど変わらないという結果だ。

片岡裕生氏 「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の記事を毎朝メールでまとめ読み(無料)

-PR-企画特集

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]