戦慄! 玉砕レポート
■ No.24: 不埒な悪行三昧シリーズ〜「外伝:でーたあくせく」
◇登場人物
神様:お客様
担T:プロジェクト担当T(COBOLER・SE)
Kリ:今年2年目社員のプログラマーリーダーK
SN:Kリの後釜となる今年2年目社員
新人:今年の新人。VB+Jetの経験しかない
助人:他部署からの助っ人。(社内で一番Oracleが詳しい人)
----------------------------------------------
開発はOracleR7.3WGS + VB4 + OO4Oのハズが・・・
開発当時...
----------------------------------------------
新人:Oracleから一覧になるデータが欲しいのですが、MSGrid+Dataコント
ロールで作っていいですか?(^-^)/
Kリ:ん?いいよ。(^_^)あっさり
新人:ぢゃ、それで作ります。(^_^;)ほっ
担T:新人くん、頑張ってるねぇ〜(^_^)
新人:え、いえいえ、それほどでも。(^^ゞ
ただ、Oracle初めてだからいろいろわからなくて・・・(^_^;)
担T:え゛っ(^_^;)そんなに難しいの?
新人:はい、一応コーディングを減らすために、MSGrid+Dataコントロールを
使ってみようかと思うのですが、直にOracleからとってこれないよう
なので、一応、MDBファイルに落としてからそれをMSGridにバインド
させてみます。(^_^;)
担T:え゛っ(@_@;)わけがわからん。
まぁ、よくわからんけど、頑張ってね。(( ( (^_^;)
新人:Kリ〜、できましたぁ〜!(^-^)/
Kリ:ん?できた?ぢゃ、ちょっと見せてごらん。(.. )
----------------------------------------------
テストデータを2000件中2000件表示
----------------------------------------------
Kリ:ほう、以外と速いじゃんこのデータで2分か、OKOK!(^0^)/
新人:よかったぁ〜(^_^;)ほっ
----------------------------------------------
納品後数ヶ月して・・・
----------------------------------------------
神様:なんじゃぁこりゃぁ〜 怒・怒・怒!ヾ(`^´)/
担T:な、なんでしょうか? なにかありましたのでしょうか?(^_^;)
神様:この照会プログラム最近とっても遅くて使い物にならんよ!(-_-;)
納品直後は1分もかからなかったのに、今では、1時間も待たないと
データが出てこんのだよ。しかも、中には、10時間たっても終わ
らんのもあるし。(-_-;)
担T:(ひぇ〜なんでぇ〜)φ(@@;)
はい、ではさっそく原因を追及して解決しますので、さっそく
お伺いします。m(__)m
神様:早く直してくれないと困るよぉ。(-_-;)
担T:(なぜだ・・なぜなんだ・・・???)ヽ( ´ー`)丿
新人、これなんで遅いの?(^_^;)
新人:えっ、遅くないですよ。だってこないだ検収で確認したハズ
ですよね?(^-^;)
担T:そういえば、そうか・・(~_~;)ぢゃなぜ・・・
もしかして、ネットワークかOracle? さっそく調査だ!
助人:呼ばれて飛び出てぢゃぢゃぢぁ ぢぁ〜ん。(^0^)/
では、さっそく、調査しまひょ。 d(^-^)b
----------------------------------------------
現場へ
----------------------------------------------
助人:ネットワークは・・・ファイルコピーして・・・問題なし。
Oracleは、実際のSQLをSQLPlusで・・問題なし・・・
担Tさん、問題ないですよ。(-_- )
で、開発環境をコピーしたノートPC持参したので、
これで試しましょう。・・・・(-_- )
問題なく処理してますね・・・そのユーザーのクライアントで
このプログラムを実行した場合だけものすごく遅いですね・・
----------------------------------------------
しばらく、いろいろ試して・・・
----------------------------------------------
助人:わかりません。m(_ _)mお手上げです。ヽ( ´ー`)丿
担T:がび〜ん!ヽ( ´ー`)丿
助人:一応、問題のクライアントで、問題のプログラムを試して、
どのあたりで遅くなるのか細かくみてみましょうよ。
私は、VBまったく知らないので御任せします。m(_ _)m
担T:ぼ・・僕もまったくわかりません。(~_~;)どうしましょ。
では、明日、制作者を呼んで再びという事で御願いします。m(_ _)m
----------------------------------------------
翌日、再び現場・・・
----------------------------------------------
新人:では、一応、ソースレベルから追っかけて行きますね。
ステップ・ステップ・ステップ・ステップ・・
助人:(遅い・・操作が遅い・・このままでは日が暮れる・・)
そのループがメインでしょ?このデータだと何件まわるの?(^_^;)
新人:3000件程度ですね。きっぱり(^_^)
助人:(その操作では明日になっても終わらんな・・)ヽ( ´ー`)丿
なかに、なにかカウンタでもいれて、ほっとけないの?(^_^;)
そうそう、そんな風に。よし。OK。では再実行。(-_-;)
----------------------------------------------
Debug.Windowsには・・・
3000をすぎてもまだカウントアップしている・・・
----------------------------------------------
助人:をぃ。なぜ、3000件が一万回以上まわってる・・・?(^_^;)
新人:あれ〜? なぜでしょう・・・(^_^;)
助人:(作ったのはあんたでしょうが・・)(^_^;)
新人:ちょっとソースみてみます・・・・(^_^;)
すみません・・・件数分まわしてる上に、また件数分まわしてました・・
助人:げげφ(@@;)って事は・・・
3000件x3000 = 9000000なの・・・ヽ( ´ー`)丿ふっ 遅いハズだ・・・
助人:あと、これなにしてんの?Oracleには普通、CreateDynasetでしょ?
OpenRecordsetってなに?(^_^;)
新人:あぁ、これですか、ぢつは、かくかくしかじかで、MDBファイルを利用して
いるんですよ。<(`^´)>
助人:で、それさぁ〜、私のノートPCでやったときは、そこそんなに遅くな
かったよ。なんで?(^_^;)
新人:・・・そういえば、そうですねぇ。このPC、私の開発PCより速いのに
ここだけ異様に遅いですね。(-_-;)
助人:もしかして、それも原因なんぢゃない?(^_^;)
新人:確かに、9000000回のループ中の一回でこれだけ遅ければ・・・
10時間も夢ぢあぁない?・・・ヽ( ´ー`)丿
助人:・・・・(そんな冗談言える状態か・・)ヽ( ´ー`)丿
まぁ、そういう事なので、もう私の出る幕ではありませんね。
あとは頑張ってください。m(_ _)m
新人:ありがとうございました。m(_ _)m
----------------------------------------------
社で・・・
----------------------------------------------
担T:で、どうだった?(^_^;)
新人:はい、MDBとコーディングが悪いようです。(-_-;)
そのワークで使っていたMDBのファイルが500MB程に
なってましたけど、どうしましょうか?(^_^;)
担T:なにぃ〜、500MB? どうやったらそうなるの?(^_^;)
新人:わかりません。(^_^;)
SN:Kリはほかの業務にうつったので、私がかわりの担当になりました。
で、どこが問題なんでしょうか?(^_^;)
ふむふむ・・・
って、MDBでそんな使い方したら、そんなに大きくなってたうぜん
ぢぁないですか。そんな使い方はだめです。ヽ( ´ー`)丿
修正・・しなくてはいけませんね・・・(^_^;)
新人:全部・・ですか?(^_^;)
SN:もちろん。(^_^;)
新人:クリスタルレポートも含めて数十本ありますよ・・(^_^;)
SN:げっ・・よりによってクリスタルレポート・・(@_@;)
クリスタルレポートは基本的に作りなおしぢあん・・・
くらっ・・・ヽ( ´ー`)丿
新人:あぁ〜、SN先輩〜、大丈夫ですかぁ〜? おろおろ・・(@_@;)
SN:(大丈夫なわけないだろぉ〜(T_T)しくしく)
indexへ
Copyright (c) 1998 PCDN All Rights Reserved.