Pervasive以外の処理速度について
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
yone
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
atsushi様 回答ありがとうございます。
あれから試行錯誤を繰り返したのですが、V8で使っているデータベースと
V10で使っているデータベース(ほぼ内容は一緒)で極端に速度の違いが出るようです。
どちらのDBも特にチューニング等していない(設定にあまり詳しくないので)ので
なぜこんなに差が出るのか頭を悩ませています。
ちなみにV8で使っていたDBをV10で動かしたところ、速度はV8とほぼ同様の結果が出ました。
この結果から問題の切り分けとしては、DB関連だろうと思っています。
とりあえず両DBの違いと言えば、作成時期位でしょうか。。。
※V8の方が、かなり昔にDBを作成しました。
もう少し自分で調べてみますが、ここら辺の設定に詳しければ、
再度アドバイスを頂ければと思います。
その他、速度アップに繋がる貴重な情報をありがとうございました。
今後の参考にさせて頂きます。
あれから試行錯誤を繰り返したのですが、V8で使っているデータベースと
V10で使っているデータベース(ほぼ内容は一緒)で極端に速度の違いが出るようです。
どちらのDBも特にチューニング等していない(設定にあまり詳しくないので)ので
なぜこんなに差が出るのか頭を悩ませています。
ちなみにV8で使っていたDBをV10で動かしたところ、速度はV8とほぼ同様の結果が出ました。
この結果から問題の切り分けとしては、DB関連だろうと思っています。
とりあえず両DBの違いと言えば、作成時期位でしょうか。。。
※V8の方が、かなり昔にDBを作成しました。
もう少し自分で調べてみますが、ここら辺の設定に詳しければ、
再度アドバイスを頂ければと思います。
その他、速度アップに繋がる貴重な情報をありがとうございました。
今後の参考にさせて頂きます。
投票数:0
平均点:0.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
yone様、こんにちは
・問題の切り分けとして、念のために、
既存PGを残しておいて、PGを一式コピーしてから、
バッチ集計中の画面表示をメッセージのみにするなどして、
測定してみると、どうなりますでしょうか?
「〜検索中..」「〜作成中..」などなど。
V8からV9Plus移行の場合になってしまいますが、1レコードずつの
値表示の場合、極端に遅くなってしまうことがありました。
その中でもラインモードのバッチ画面は、特に遅いので、必ず、
スクリーンモードにします。
速度的には、画面表示なしが一番速いですが、長時間かかるバッチ
は、フリーズしていると勘違いされるので、何か画面表示は
あった方が良いと思われます。
-----------------------------------------------------------
V8で正常動作しているプログラムと思われるので、以下の内容は、
あまり関係ないですが、全体的に速くしたい場合のみ良いかも。
<私は、オラクルでの場合なので、以下参考程度。>
-----------------------------------------------------------
・物理トランザクションでのコミットを、レコード単位ではなく
タスク単位もしくは、処理単位にして、コミット回数を減らすと、
搭載メモリにもよりますが、速くはなると思います。
(処理単位はトランザクション失敗で、実行前までロールバック)
・多重ループの場合、できればレコード数が多いテーブルを最初の
タスクのメインテーブルにして、リンクは照会リンクではなく、
可能な限り結合リンクで抽出したり、外部リンクを使用する。
(SELECT文の発行数や、ループするタスク数を減らすのが目的。)
・メインテーブルの範囲に記述できない抽出は、範囲式ではなく、
[DB SQL]でWHERE句の抽出をする。
(以下、追記)
・結合リンクのキー以外の抽出は、全て位置付で行う。
テストしてみると、結合リンク範囲だと遅くなるのがわかります。
位置付に記述できない場合は、[DB SQL]でWHERE句を記述する。
※結合/外部リンクがあると、[DB SQL]ではアルファベットで
テーブル名を指定するようになります。
・速度面だけを考えるとMAGICでもVBでも同じように実行できる
ストアドプロシージャを使用する。
・問題の切り分けとして、念のために、
既存PGを残しておいて、PGを一式コピーしてから、
バッチ集計中の画面表示をメッセージのみにするなどして、
測定してみると、どうなりますでしょうか?
「〜検索中..」「〜作成中..」などなど。
V8からV9Plus移行の場合になってしまいますが、1レコードずつの
値表示の場合、極端に遅くなってしまうことがありました。
その中でもラインモードのバッチ画面は、特に遅いので、必ず、
スクリーンモードにします。
速度的には、画面表示なしが一番速いですが、長時間かかるバッチ
は、フリーズしていると勘違いされるので、何か画面表示は
あった方が良いと思われます。
-----------------------------------------------------------
V8で正常動作しているプログラムと思われるので、以下の内容は、
あまり関係ないですが、全体的に速くしたい場合のみ良いかも。
<私は、オラクルでの場合なので、以下参考程度。>
-----------------------------------------------------------
・物理トランザクションでのコミットを、レコード単位ではなく
タスク単位もしくは、処理単位にして、コミット回数を減らすと、
搭載メモリにもよりますが、速くはなると思います。
(処理単位はトランザクション失敗で、実行前までロールバック)
・多重ループの場合、できればレコード数が多いテーブルを最初の
タスクのメインテーブルにして、リンクは照会リンクではなく、
可能な限り結合リンクで抽出したり、外部リンクを使用する。
(SELECT文の発行数や、ループするタスク数を減らすのが目的。)
・メインテーブルの範囲に記述できない抽出は、範囲式ではなく、
[DB SQL]でWHERE句の抽出をする。
(以下、追記)
・結合リンクのキー以外の抽出は、全て位置付で行う。
テストしてみると、結合リンク範囲だと遅くなるのがわかります。
位置付に記述できない場合は、[DB SQL]でWHERE句を記述する。
※結合/外部リンクがあると、[DB SQL]ではアルファベットで
テーブル名を指定するようになります。
・速度面だけを考えるとMAGICでもVBでも同じように実行できる
ストアドプロシージャを使用する。
投票数:0
平均点:0.00
yone
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
V8からV10へのマイグレーションを行っています。
SQL2000+V10で動作確認を行うと、更新バッチの集計に異常に時間が掛かるようになってしまいました。
皆さんの所ではこういった現象はないですか?
情報提供よろしくお願いします。
バッチ処理時間 参考値
・SQL2000+V8 71秒 (Gateway mgms732.dll)
・SQL2000+V10 188秒(Gateway MGmssql.dll)
※V10のコントロールはキャビネットファイルにして実行しています。
SQL2000+V10で動作確認を行うと、更新バッチの集計に異常に時間が掛かるようになってしまいました。
皆さんの所ではこういった現象はないですか?
情報提供よろしくお願いします。
バッチ処理時間 参考値
・SQL2000+V8 71秒 (Gateway mgms732.dll)
・SQL2000+V10 188秒(Gateway MGmssql.dll)
※V10のコントロールはキャビネットファイルにして実行しています。
投票数:0
平均点:0.00