xpa 3.2c で1400万件のデータをAPGで開くのに時間がかかる
xpa 3.2 はSQL Serverの1200万件といった件数が多いテーブルをAPGで開くのは
遅いのではないかという結論に達しました。
xpa 3.1a と
xpa 3.2c PT4 で
項目数20個、レコード数 1200万件のSQL ServerのデータをAPGをすると
3.1はすぐデータが表示され、Ctrl+Endで最後のレコードにも瞬間で位置付くのに対し
3.2ではデータが表示されるまでに50秒かかり、Ctrl+Endも同じぐらいの時間を要します。
xpa 3.1 + SQL Server 2012 は高速
xpa 3.2 + SQL Server 2019 は遅いことから、2019を当初疑いました。
しかしxpa 3.1、3.2 のどちらも SQL Server 2012 の同じDBの同じテーブル
で実験しても xpa 3.2 の遅さは変わらずでした。
同じDBにある 1400万件の別のテーブルで実験しても
同様にxpa3.2は時間がかかってしまいました。
同一DB、同一テーブルへのAPGで
xpa 3.1 はすぐ開くけど、xpa 3.2 は遅いという結果です。
xpa 3.2 + SQL Server 2019 の組合せはよくないのかなと当初思いましたが
そうではなくxpa 3.2では1200万件超といったレコード数のテーブルを開くのは
なぜか遅いという途中報告です。同様の方いらっしゃいませんでしょうか?
xpa 3.2c PT4、PT5、xpa 3.3b の ReadMe の改善内容部分と
テクニカル情報は探してみましたが、発見には至っておりません。
今までxpa 3.2 で困った事はほとんどなかったのですが。
-
この同じデータを全く別のプロジェクトの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 以降は遅いという実験結果です。 -
いつも皆様には大変お世話になっております。お騒がせしました。
ヘルプのデータベース情報の所に載っている ONLINE_ARRAY_FETCHING = N
を設定し、開発環境のxpa3.2で遅さを解消出来ました。
今夜客先サーバーも同様の設定をしてみたいと思います。 -
似たような話で、照会リンクの改善になるかもしれない
LimitLinkToSingleFetch=N という設定もあるんですね。 -
「ONLINE_ARRAY_FETCHING = N」という設定は、ひょっとして「何も記述しない(空白のまま)」という設定と同じなのではないでしょうか?
時間があるときに1200万件でテストしていただけると嬉しいです。
-
tandaさん こんばんは。
※少し間違いがあったので訂正しました。
以下4.6のヘルプから引用です。このキーワードは、配列サイズの値をオンラインタスクとバッチタスクの両方
に適用できるか、バッチタスクの場合にのみ使用できるかをどうかを定義します。このキーワードがYに設定されている場合、配列サイズの値はオンラインタスク
とバッチタスクの両方に適用されます。このキーワードがNに設定されていると、配列サイズの値がバッチタスクでのみ
使用される古い動作が維持されます。この場合、値1がオンラインタスクで使用されます。
(サポートバージョン:3.2)
3.2では、[DBMS]テーブルの[パラメータ]特性に初期値が設定されていましたが、
3.3から、[データベース]特性の[データベース情報]特性に設定箇所が変更されました。
--- 以上引用 --
3.2のみ[DBMS]に設定
3.3から[データベース]に設定すると従来の動作。
----------------
「何も記述しない(空白のまま)」は私が改善する前の状態がそうでした。 -
ということは、「何も記述しない状態」というのは「ONLINE_ARRAY_FETCHING = Y」を意味することになるのでしょうかね?
-
今回初めて ONLINE_ARRAY_FETCHING = N を使いました。
xpa 3.2 は今回で11システム目ですが今までは1200万件といったデータを扱う
システムが無かったのか、環境によるものか私の場合、今回初めて知った設定です。 -
そうですね。xpa 3.2 で[DBMS] → MICROSOFTSQLSERVERのパラメータに
何も書いていない場合も
ONLINE_ARRAY_FETCHING = Y の場合も1200万件データAPGは遅かったです。
ONLINE_ARRAY_FETCHING = N を記述すると一瞬で開きました。私の実験の場合。
もしかするとxpa3.2以降で上記3つのいずれでももしかすると
速度問題無しの環境もあるのかもしれません。わかりません。
※正確には、3.2はDBMSに、3.3以降はデータベースに設定。 -
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という文字が入っていてわかり易いです。 -
エディタで変更せずにMagic上で設定変更する方が間違いにくいと思います。
-
Win10、xpa 3.2c PT4 開発版の環境で
SQL Server 2012 でも 2019 でも
ONLINE_ARRAY_FETCHING = N を記述する事で
1200万件のデータが一瞬でAPG表示されるようになりました。
客先実行版環境でも同様に解決したと思います。 -
記述なしのデフォルトが「Y」で、速度が遅くなるというのはちょっと困りましたね。
-
※言い回しがおかしな部分があったので文章訂正しました。
初期値は未設定で、ONLINE_ARRAY_FETCHING=Yとおそらく同等ですね。
そのままだと「環境によっては」1200万件といったデータをオンラインタスクで表示すると、表示されるまでに非常に時間がかかる場合があるようです。
なので「ONLINE_ARRAY_FETCHING=N」は必須ではないかもしれませんが、速度面でよくない時は試してもいいのかもしれませんね。 -
xpa 3.2 改め xpa 4 Plus にしたシステム。
SQL Serverで
データベースAのあるテーブル1400万件をメインソースにして
データベースBのテーブルを照会リンクして
オンライン表示するプログラムがとても遅かったです。
(INIはコンバートせずに、xpa 4 Plusを手動で変更。)
赤線部分を追記して、一瞬で表示されるようになりました。
サインインしてコメントを残してください。
コメント
14件のコメント