はじめて質問させていただきます。
BDS(Turbo Delphi)+Interbase7.5で、WebModuleを使ってWebアプリケーションを作成しています。
IBSQLを用いて、DB内のデータを表にしてhtml上で抽出して表示するだけの単純なものです。
一通りの形は整えて、正常にデータも表示できるのですが、抽出時のブラウザの読み込み速度が非常に遅いという問題にぶつかりました。
色々実験して原因を探ってみたところ、どうもIBDatabaseの接続がデフォルトでFalseになっていることから、抽出のときにデータベースへの接続を毎回行っていることが分かりました。
Delphi for PHPのような持続的接続といった機能やそれに近しい方法などはございませんでしょうか?
ご教授お願いいたします。
自己レスです。
依然試行錯誤中ですが、IBConsoleで対象のDBに接続すると、接続が持続されるのか、速度が格段に上がりました。
一応プログラム上では、TWebModuleのOnCreate時に
if IBDatabase.Connected = False then begin
IBDatabase.Connected := True;
IBTransaction.Active := True;
end;
と記述しているのですが……。
どなたか、ご教授お願いいたします。
ひきつづき自己レスです。
いまだに試行錯誤中ですが、IBQueryとIBSQLならばIBSQLのほうが処理が速いということでIBSQLをチョイスしていましたが、あえてIBQueryに変更してみました。……が、やっぱり大きく速度が変更したようには思えませんでした。
INSERTもDELETEもない、ただのSELECT文によるDB閲覧ページですから、IBSQLで充分だと思っているのですが……。
そもそも、データベースの持続的接続をWebページ上で行うなんてDelphiには不可能なのでしょうか?
なんだか質問自体が怪しくなってきている始末。
どんなことでもかまいませんので、どなたかご助言・ご教授お願いいたします。
最後の自己レスです。
どうも掲示板のご様子を見ていますと、分からない分からないとわめいて自己レスしているだけの自分も荒らしの類にしか見えませんでした。
大事な情報の交換場所を汚してしまって申し訳ない次第です。
いまだに問題は解決はできておりませんが、これ以上ご迷惑をかけるわけにもいきませんので、一度解決とさせていただきます。
もっと勉強してから、こちらの掲示板を利用できるようになりたいと思います。
掲示板を利用されている皆様にはご迷惑をおかけしましたことをお詫び申しあげます。
きむきさん,こんにちは.Mr.XRAYと申します.
(ステハンでないと,こう名前で呼べるのでいいですねぇ)
ご不満もあるでしょうが,掲示板にはいろいろな方がいます.
レスを付けても,そのまま,やっと反応があったと思ったら数日後とか.
質問があると,様子見の方もいますし,いろいろあります.
また,サポートセンターというわけではないので,レスがない場合だってあり得ます.
私はWebアプリケーションの経験はほとんどありませんが,データベースと
いうことで,
本当に失礼なことを聞いてしまいますが,
まさか,インデックスなしで使用しているということはないですよね?
JETエンジンデータベースは,インデックスなしでもそこそこ動作しますが,
例えばOracleでは,データベースの表のデータ数が,高々数十件でも,
インデックスなしではとても使い物にはなりません.
ほとんどのデータベースでも同じではないかと思います.
間違っていたらゴメンナサイ.
「持続的に接続」というのは,どういう状態なのか,私には意味がよく(まったく?)分かりません.
それと,Delphi関係のコミュニケーションは他にもあります.
是非そちらの利用も検討してみてください.
たしか,IB関係も専用のがあったような...
>最後の自己レスです。
ということでしたね.(^^;
>まさか,インデックスなしで使用しているということはないですよね?
大変失礼しました.といことは考えられませんね.
最初の質問の文章に
>Delphi for PHPのような 云々
とあります.PHPから操作する場合は問題ないようですので.
解決策では、ありませんが・・・・
私も
>Delphi for PHPのような持続的接続
というのが、(Delphi for PHPを使ったことがないので)判らないのですが、
それは、(通常の)PHP + Interbaseでもできることですか?
できるとしたら、どのようなしくみになっていますか?
>WebModuleを使ってWebアプリケーションを作成
こちらも作ったことがないので、判らないのですが、
PHPで持続的接続ができるのであり、そのしくみが判れば、
それをWebModuleを使ったWebアプリケーションでも実装可能か
調べてみるというのも、よいかと思います。
Mr.XRAYさん、igyさん、
解決とさせていただいた質問にわざわざ書込みをしていただいてありがとうございます。
また、質問者が質問の内容を理解し切れていないのに無理に答えていただいて申し訳ございません。
>Delphi for PHPのような持続的接続
これは自分の中で他に表現が見つからなかったための苦し紛れの言葉です。混乱をまねいたようで本当に申し訳ありません。
さて、お二人の書込み後も引き続き原因を調べておりましたところ、原因の一端と思しきものを発見いたしました。
表示に時間がかかるのはおそらくSELECT文の記述内容に問題があったためと思われます。
まだ詳細な原因は分かっておりませんが、暗中模索だったところに、お二人のご助言のおかげで光明を見出せました。
本当にありがとうございました。
ツイート | ![]() |