[pgsql-jp: 29328] Re: パフォーマンス向上策

tamagawa tamagawa @ sts.co.jp
2003年 3月 9日 (日) 15:39:13 JST


玉川@STSです。

どうも論点が整理されていないような気がするんですが、
「速い」というのもいろいろあって、

1)大量のデータから少量のデータを抜き出すケース
2)問い合わせの結果として大量のデータを返すケース
3)同じような問い合わせが大量に繰り返されるケース

などなど、ぜんぶ違うわけです。

1)の場合はほぼデータベースエンジンの検索性能に
依存すると思いますし、PostgreSQLもOracleもそれほど
変わらないように思います。検索の内容が単純(副問い合わせ
を使わないですむようなケース)ならMySQLが圧倒的に速いで
しょうね。

2)の場合は、検索性能に加えてドライバやPHP/Java等の
速度が関わってきます。JDBCが速いというのはこのケースの
ことかもしれませんね(私は確認していませんが)。

3)の場合は、Oracleで言うところのprepareが効いてくるケース
です。一般にRDBでは、問い合わせの内容から実行計画を立てる
(PostgreSQLではexplain planで出せるやつですね)訳ですが、
この作業がかなり重たいのです。で、Oracleの場合はprepareし
ておけば、同じような問い合わせの場合は前に使った計画を
そのまま使ってくれます。PostgreSQL+PHPにはこのPrepareの
機能がないので、問い合わせの実行数そのものが多い場合には
Oracleに比べて不利になるでしょうね。MySQLの場合は、そもそも
複雑な問い合わせができないので、実行計画を立てるのにほと
んど時間がかからないような感じです。

それと、一般にデータベースへの接続には相当時間がかかります。
PHPでいうと、データベースへの接続関数でpが名前の頭について
いるものは、ページの表示の終了後もデータベースへの接続を
保ちます。

さて、今回の小泉さんの件では、パフォーマンスの低下が何につ
れて落ちてきているのでしょうか?単位時間あたりの問い合わせ
件数の増加でしょうか?それとも単にデータベース内に保存され
ているデータ量の増加につれて落ちてきているのでしょうか?
--
玉川@STS


Tsukasa Koizumi wrote:
> 小泉@コイズコムデジタルワークスです。
> 
> <3E6A509A.10308 @ hdt.co.jp> の、
>    "[pgsql-jp: 29315] Re: パフォーマンス向上策" において、
>    "Takeshi Miyakawa <tak @ hdt.co.jp>"さんは書きました:
> 
> 
>># お互い、こんな時間に仕事してるわけですか...
> 
> 
> まったく(悲)。
> 
> 
> 
>> どうもよくわからないのですが、うちではもっと非力なマシンで2万人
>>ばかりの顧客情報をOracle 8で処理しています。PostgreSQLより劇的
>>に速いということはないと思っているのですが、パフォーマンスが問題
>>になったことはありません(それ以前にPentium 100 MHz、デュアルプ
>>ロセッサ、RAM 48MBという、信じられないようなスペックのサーバで
>>Oracle 7を長年使っていたので、そのギャップから、過剰に快適だと
>>信じているのかも知れませんが)。
> 
> 
> これも人から聞いた話なので、実感ではないのですが、Oracleはすごく速いと
> 聞いてます。あくまで噂でしかありませんが…。
> 
> 
> 
>> うーん...
>> JDBCがネイティヴ接続より速いなんてことはないと思うのですが。
> 
> 
> 私もそう思うんです。思うんですが「JDBCは速い」という話を別々の人からよ
> く聞かされるので…。
> 
> 
>> 僕はPHPのことはほとんど何も知らないのですが、psqlから直接
>>SQLを適用した場合と速度が変わったりします? 速度が極端に
>>違うようならPHPのスクリプトに問題があると思います(コネクション
>>を毎回張りなおしているとか)。
> 
> 
> 私の印象では、若干遅いです。
> 
> 単純なSELECT文では、全く同じSQLを1回投げて、結果を表示するだけ…という
> スクリプトでpsqlと比較すると、PHPの方がややもたつく程度です。
> 
> また、問い合せ結果が大量になる場合、カーソル〜FETCHで処理すると速くな
> るはずですが、PHPではあまり速くなりません。普通にSELECTするのと変わり
> ない感じです(Perlでは明らかに速かったです)。
> 
> ただし、単純な問い合わせであっても大量に集中すると、かなり重くなってき
> ます。この状態では、ウェブサーバのメモリ、CPUリソースの使用率に対して、
> DBサーバのリソース使用率が圧倒的に小さいことがわかっています。
> つまり、PostgreSQLの処理は瞬時に終っても、ウェブサーバがもたもたしてい
> る感じです。なので、PHPの問題も小さくはないだろうと思うのですが。。。
> 
> 
> 
>>もしPHPとpsqlとで速度が変わらな
>>いならJDBCを使っても関係ないでしょう。PostgreSQL内部の問
>>題です。
> 
> 
> なるほど。
> 
> 
> 
>> ついでに言わせてもらえれば、PHPで処理できるような要求で、
>>とにかくパフォーマンスをあげたい、ということだったらMySQLあたりに
>>乗り換えた方がいいんじゃないでしょうか。
> 
> 
> 同感です。
> 
> 現状では、リレーショナルなDB設計に固執する必要が無くなってきたので、
> MySQLへの乗り換えも検討中です。ただ、ここにも「本当にMySQLは速いのか?」
> という疑問が…。
> 
> 各種ベンチマークなどの資料は見たんですけど、結局、DB構成によってパフォ
> ーマンスが変わると思うので、一概に言い切れませんから。
> 
> ところで、「PHPで処理できるような要求」というところがちょっと気になっ
> たのですが、PHP以外の選択肢では何がよろしいと思われますか?
> jspもaspもさほど変わらないという認識だったのですが…。
> 
> #PerlやCというのはナシで…(^^;
> 
> 
> 
> /*------------------------------------------------------------------*/
> /* 小泉 司@コイズコムデジタルワークス(東京都文京区)              */
> /* Desk: mailto:tsukasa @ koiz.com / Mobile: mailto:pigtail @ pdx.ne.jp */
> /* PGP Public Key: http://www.koiz.com/~tsukasa/PGP_KEY/tsukasa.asc */
> /*------------------------------------------------------------------*/





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