[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 メーリングリストの案内