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

Tsukasa Koizumi tsukasa @ koiz.com
2003年 3月 9日 (日) 04:23:36 JST


小泉@コイズコムデジタルワークスです。

<1047123236.4292906039 @ mediafront.co.jp> の、
   "[pgsql-jp: 29310] Re: パフォーマンス向上策" において、
   "Makoto Komatsu <eurah @ mediafront.co.jp>"さんは書きました:

> Sat, 08 Mar 2003 19:58:08 +0900に、きしださんは
> <3E69CCC0316.B664KISHIDA @ 192.168.0.2>において、
> 以下のように書きました:
> 
> > > あー、ど素人だと思われてしまったようですね。
> > > #確かに、ど素人のような設計ですので、仕方ないですが…(悲)
> >
> > はい、思ってしまいました。(^^;
> 
> いやあ、度肝を抜かれた気分でしたけどね。

お騒がせしてすみません(^^;


> 理論や基本は大切で、それを無視しては良いシステムもできないのでは
> ないかと考えているのですが、時にはその拘束を離れて自由な発想で
> 飛躍することも必要かと思います。
> 天才と呼ばれるのは飛躍して高いところへ届いた人、
> 無知と呼ばれるのは飛躍してそのまま落ちた人。
> でも平凡な方法しか考えない身にはどちらも衝撃的です。

参考にしてはいけない例として、事の経緯を。

○最初のバージョン(2002年9月)
ユーザ個々のデータを、

  ・認証
  ・プロフィール
  ・ステータス
  ・フラグ
  ・金銭系ステータス、ポイント
  ・決済履歴

の5つのテーブルに分け、リレーショナルな作りにした。

が、ユーザ数が4〜5千を超えたあたりから、「決済履歴の表示が遅い!」とク
レームあり。

マシンが非力(single celeron 800MHz)だったので、ハードウェアのアップ
グレードを提案したが、却下(T_T)。
仕方ないので、大急ぎでDBを組み直す。

この時点で、サイト管理者レベルで、全ユーザの決済履歴を一覧するような話
はなく、あくまでユーザ毎に表示するだけ。


○2番目のバージョン(2002年12月)
ユーザ毎に決済履歴テーブルを作るように変更。
ユーザ毎の決済履歴検索を速くするには、これしかない…という苦肉の策。


○現行バージョン(2002年2月)
ユーザーが2万を超えた当たりから、動作が著しく遅くなる。
その上、全ユーザの決済履歴を検索、一覧したいとの要望。

高速化に四苦八苦している間に、日々会員数は増え続け、現在に至る(涙)


…とまぁ、こんなところです。
お恥ずかしい限りで…。


> 僕の意見もやはり、やり直したほうが良いのではないかと・・・。
> うちの社でこんな設計が見つかったら、きっと生きて帰れないです・・・(汗;。
> (言い直し)黙ってそのままでは帰らせないです。

最近、この私が作っているシステムと同機能のシステムで、非常に動作が速い
ものを知り、そのソースを見る機会がありました。

ハードウェアはほぼ同スペックで、PostgreSQLのバージョンも変わりません。
フロントエンドのスクリプトエンジンも同じくPHP4です。…にも関わらず、そ
のシステムは圧倒的に速いのです。

で、テーブル構造を見ると…全てのデータがひとつのテーブルに入ってました
(驚愕)。リレーショナルもなにも、あったもんじゃありません。非常にショ
ッキングでした(T_T)

どうせ作り直すなら…と、一応試してみようとは思ってますが、それであれほ
ど速くなるとはにわかには信じがたく(むしろ遅くなるような気が…)、もし
かしてJDBCなんかを使ってないか?などと疑ってます。

#PHPのソースは見られなかったので、JDBCを使ってるかどうかは不明です。


JDBCは速い!とよく聞くのですが、これって本当のところはどうなのでしょう
か。人によっては、「圧倒的に速い」といった表現をすることもあって、期待
しているのですが…。

PHPのPgsqlモジュールより速いならば、採用の価値はあるかと思ってます。

#PHPのPgsqlモジュールは、著しく遅い気がしてます(^^;

/*------------------------------------------------------------------*/
/* 小泉 司@コイズコムデジタルワークス(東京都文京区)              */
/* 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 メーリングリストの案内