[ad_1]
データが 7Lakh レコードに似ている場合、データをハンズオン テーブルにロードするストア プロシージャがあり、データのロードに 40 秒以上かかります。現在、クライアントはロード時間を 10 秒に短縮するよう求めています。
ストア プロシージャを最適化しましたが、うまくいきません。
ここで私の質問は、データの一部を 1 ラークと読み込んで、ユーザーが UI で何らかのアクティビティを実行できるようにする一方で、残りのレコードを読み込むことができる方法があるということです。
マルチスレッドの例
どうすれば達成できますか
私が試したこと:
まだ作業中ですが、自動マッパーを試しましたが、うまくいきませんでした
解決策 1
スレッド化は役に立ちません。時間がかかる操作は「コード」の一部ではありません。
ストアド プロシージャは、明らかにサーバーで実行されます。問題は、サーバー上で操作を開始し、結果セットが返されるまでに時間がかかることです。これには次の 3 つの部分があります。
1) サーバーで SP を起動します。
2) サーバー上で SP を実行して、必要な行を組み立てます。
3) データを返却します。
パート 2 とある程度パート 3 は時間がかかるところです – パート 1 は速く、通常はほぼ瞬時です – しかし 700,000 行は大量のデータです。
各行の平均が 1,000 バイトである場合、データの 3/4 ギガバイトの厚い端を転送することを検討していることになり、それ自体でかなりの時間がかかります – CAT5 LAN を介して 6-そのためだけに10秒、それはSPが完了するまで発生しません! WiFi が関係している場合、その時間が長くなり、インターネットによってプロセス全体が大幅に遅くなる可能性があります。
そしてほぼ確実に、最適化する必要があるのは SP です。
最悪の場合の LAN 転送は 10 秒で、その 40 秒のうち 30 秒はサーバーが SP を処理する時間です。 そこで、そこを見て、それが何をするのか見てみましょう。
しかし…ユーザーが認識している700,000行のデータで一体何をしているのか疑問に思う必要がありますか? ユーザーにすべてを表示することはできません。それは信じられないほどばかげたことです。では、ユーザーはクエリにかかる時間をどのように認識しているのでしょうか?
ほとんどの場合、必要のないデータを取得するためにかなりの時間を無駄にしていないため、最初にデータが実際に必要かどうかを調べて、データをどうするかを確認することから始めます。
[ad_2]
コメント