メインコンテンツへスキップ

xpa 3.2c で1400万件のデータをAPGで開くのに時間がかかる

コメント

14件のコメント

  • nkmt

    この同じデータを全く別のプロジェクトのxpa 4.6 で定義取得して、
    データをAPGで開いてもxpa 3.2と同じぐらい時間がかかり遅いです。
    同様の実験を xpa 4.7 でもやりましたが遅いです。

    同様の実験を uniPaaS V1 Plus でやりました。
    xpa 3.1 のように一瞬で開きました。

    xpa 3.1 までは、1200万件のSQL Serverデータを開くのは早いけど
    xpa 3.2 以降は遅いという実験結果です。

  • nkmt

    いつも皆様には大変お世話になっております。お騒がせしました。
    ヘルプのデータベース情報の所に載っている ONLINE_ARRAY_FETCHING = N 
    を設定し、開発環境のxpa3.2で遅さを解消出来ました。
    今夜客先サーバーも同様の設定をしてみたいと思います。

  • nkmt

    似たような話で、照会リンクの改善になるかもしれない
    LimitLinkToSingleFetch=N という設定もあるんですね。

  • Tanda

    「ONLINE_ARRAY_FETCHING = N」という設定は、ひょっとして「何も記述しない(空白のまま)」という設定と同じなのではないでしょうか?

    時間があるときに1200万件でテストしていただけると嬉しいです。

     

  • nkmt

    tandaさん こんばんは。
    ※少し間違いがあったので訂正しました。

    以下4.6のヘルプから引用です。

    このキーワードは、配列サイズの値をオンラインタスクとバッチタスクの両方
    に適用できるか、バッチタスクの場合にのみ使用できるかをどうかを定義します。

    このキーワードがYに設定されている場合、配列サイズの値はオンラインタスク
    とバッチタスクの両方に適用されます。

    このキーワードがNに設定されていると、配列サイズの値がバッチタスクでのみ
    使用される古い動作が維持されます。この場合、値1がオンラインタスクで使用されます。
    (サポートバージョン:3.2)

    3.2では、[DBMS]テーブルの[パラメータ]特性に初期値が設定されていましたが、
    3.3から、[データベース]特性の[データベース情報]特性に設定箇所が変更されました。
    --- 以上引用 --

    3.2のみ[DBMS]に設定
    3.3から[データベース]に設定すると従来の動作。
    ----------------
    「何も記述しない(空白のまま)」は私が改善する前の状態がそうでした。

  • Tanda

    ということは、「何も記述しない状態」というのは「ONLINE_ARRAY_FETCHING = Y」を意味することになるのでしょうかね?

  • nkmt

    今回初めて ONLINE_ARRAY_FETCHING = N を使いました。
    xpa 3.2 は今回で11システム目ですが今までは1200万件といったデータを扱う
    システムが無かったのか、環境によるものか私の場合、今回初めて知った設定です。

  • nkmt

    そうですね。xpa 3.2 で[DBMS] → MICROSOFTSQLSERVERのパラメータに
    何も書いていない場合も
    ONLINE_ARRAY_FETCHING = Y の場合も1200万件データAPGは遅かったです。
    ONLINE_ARRAY_FETCHING = N を記述すると一瞬で開きました。私の実験の場合。

    もしかするとxpa3.2以降で上記3つのいずれでももしかすると
    速度問題無しの環境もあるのかもしれません。わかりません。
    ※正確には、3.2はDBMSに、3.3以降はデータベースに設定。

  • nkmt

    xpa3.2のINIファイルをテキストエディタで開くと
    MicrosoftSQLServer = 21, NotAllowNull, 10.3, MicrosoftSQL Parameters, N, +
    , NotLogSync, 50, 0, NotCheckExist,
    となっており MicrosoftSQL Parameters という部分を
    ONLINE_ARRAY_FETCHING = N へ書き換えました。
    ※xpa3.2の場合
    ※置き換える場所の目安にMicrosoftSQL Parametersという文字が入っていてわかり易いです。



  • nkmt

    エディタで変更せずにMagic上で設定変更する方が間違いにくいと思います。

  • nkmt

    Win10、xpa 3.2c PT4 開発版の環境で
    SQL Server 2012 でも 2019 でも
    ONLINE_ARRAY_FETCHING = N を記述する事で
    1200万件のデータが一瞬でAPG表示されるようになりました。
    客先実行版環境でも同様に解決したと思います。

  • Tanda

    記述なしのデフォルトが「Y」で、速度が遅くなるというのはちょっと困りましたね。

  • nkmt

    ※言い回しがおかしな部分があったので文章訂正しました。
    初期値は未設定で、ONLINE_ARRAY_FETCHING=Yとおそらく同等ですね。
    そのままだと「環境によっては」1200万件といったデータをオンラインタスクで表示すると、表示されるまでに非常に時間がかかる場合があるようです。
    なので「ONLINE_ARRAY_FETCHING=N」は必須ではないかもしれませんが、速度面でよくない時は試してもいいのかもしれませんね。

  • nkmt

    xpa 3.2 改め xpa 4 Plus にしたシステム。
    SQL Serverで
    データベースAのあるテーブル1400万件をメインソースにして
    データベースBのテーブルを照会リンクして
    オンライン表示するプログラムがとても遅かったです。
    (INIはコンバートせずに、xpa 4 Plusを手動で変更。)
    赤線部分を追記して、一瞬で表示されるようになりました。

サインインしてコメントを残してください。