この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 26469|答える: 3

[出典] EFはランダムなデータに慎重です

[リンクをコピー]
掲載地 2019/04/25 17:01:42 | | | |
本日、サーバーがCC攻撃を受け、IIS上のウェブサイトがフリーズし、再起動後に再びフリーズしました。ウェブサイトのエラーログは以下の通り確認してください。

System.Data.Entity.Core.EntityCommandExecutionException: 执行命令定义时出错。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: 执行超时已过期。完成操作之前已超时或服务器未响应。  ---> System.ComponentModel.Win32Exception: 等待的操作过时。


多数のクエリタイムアウト例外がウェブサイトのハングを引き起こし、クエリタイムアウトのSQL文はすべてランダムなデータを取得する方法から来ています。コードは以下の通りです:

コードの大まかな意味は、現在のIDと重複しない限り、データベースから10件のデータがランダムに選ばれるということです。

一見単純な要件がサーバーを切ってしまいました! 上記のコードによって生成されるSQL文は以下の通りです。

実施計画は以下の通りです。



もしデータベースに100万件のデータがあるなら、まず999,999件のデータを取り、そのうち10件を取り出すのではないでしょうか?

DBAグループの大手に聞いてみて、答えはこうです:はいうわ、それは遅いに違いないですし、このSQL文を何度も呼び出す必要があります。



最初はEFの問題かと思いました。実際、SQLで直接書くと良い解決策はありません

もしそうなら、ぜひ教えてください!




先の:オープンソースプロジェクトHtmlAgilityPackはC#ウェブクローラーを実装しています
次に:2019年HCIAラーニングビデオ
掲載地 2019/04/25 17:07:00 |
学んだ
掲載地 2019/04/26 9:20:13 |
プログラムには10個の乱数があり、その中のSQLは完全です
掲載地 2019/04/26 13:08:53 |
~~~~~~~~~~~~~~~~
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com