[pgsql-jp: 33158] Re: PostgreSQL vs MySQL

Yasuo Ohgaki yohgaki @ ohgaki.net
2004年 6月 8日 (火) 01:30:10 JST


大垣です。

# どんどんMySQLな話題に...
# 色々試してみるとMySQLは予想できない動作をしますね。

Tatsuo Ishii wrote:
> 石井です.
> 
> 
>>>>OSによっても差が出ると思いますが、MySQLはSMPカーネルでスケールしないようです。
>>>>このテストではInnoDBを使いましたが、InnoDBを使った場合MySQLはPostgreSQLより
>>>>>>>>かなり遅い様です。PostgreSQLの方が5倍以上の性能が出ていました。
> 
> 
> もともとPostgreSQLのINSERTはかなり高速なので,まあMySQLが負けるのも無
> 理はないところでしょう.これがUPDATEだったらあるいは違った結果になって
> いたかも.
> 
> それと,InnoDBは同時接続数が多いときの性能が今一という話を聞いたことが
> あります.-cをいろいろ変えて結果を取り直すと面白いかも.

とりあえず -c 5 だと
Requests per second:    27.12 [#/sec] (mean)
とInnoDBでの性能が多少改善しました。

テーブルをなめるクエリが遅すぎな疑いがあるのでテーブルをなめないよう
にして -c 50 で試してみると
Requests per second:    397.45 [#/sec] (mean)
となんと何故かMyISAMよりかなり速い結果になってしまいました。
しかしこれだけ速いと何か重要な事を省略している疑いも...
# ちなみに DELETE FROM foo WHERE bar > 100; のようなクエリはInnoDB
# では禁句なようです。

前のテストとこの結果からするとInnoDBはロックエスカレーションが発生して
テーブルロック開放待ち(busy waitな感じ)が発生しているように思えます。

しかし、MyISAMはテーブルをなめるクエリがある方が速い?!らしくテーブルを
なめるクエリを無くすと何故か
Requests per second:    75.68 [#/sec] (mean)
と半分以下の性能になってしまいました。
# MyISAMはテーブル全部を見るのは得意と聞いたことがありますが.. 何故?

PostgreSQLの性能にはあまりばらつきが見られないし、ベンチマークの結果
も説明しやすい結果ですが、MySQLのベンチマークの結果は予想しづらい結果
です。InnoDBは単一レコード操作に対する最適化を最大限にするために離れ技
を使っているような感じの結果です。

性能にかなりばらつきあること、MyISAMとInnoDBでは性能面で全く反対の特徴
があるような動作など、MyISAMののりで作ったり、トランザクションを多用する
システムをMySQLでシステム構築すると苦労する可能性は高そうな気がします。

個人的な感想としてはこれだけ少しのクエリを試しただけでこれほど性能差が
でるDBでシステム構築するのはかなり怖いです。作って本当に運用するまで本
当に使えるシステムになったのか見当が付きません。
# 200トランザクション/sec のつもりが20トランザクション/secになった
# と言うのは目も当てられないですが、簡単なテストの結果を見るとあって
# も不思議ではないようです。結局InnoDBでも単純なDBでのみ使うと言うこ
# とになりそうな気が...

こうなるとPostgreSQLで最高速になるように調整したり、もっと色々なパター
ンや本格的なベンチマークを試したいところですが、時間切れです。

--
Yasuo Ohgaki




pgsql-jp メーリングリストの案内