Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 26469|Antwort: 3

[Quelle] EF ist vorsichtig bei zufälligen Daten

[Link kopieren]
Veröffentlicht am 25.04.2019 17:01:42 | | | |
Heute erlitt der Server einen CC-Angriff, der dazu führte, dass die Website auf IIS hängen blieb, und nach dem Neustart wurde die Website erneut aufgehängt. Überprüfen Sie das Website-Fehlerprotokoll wie folgt:

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


Eine große Anzahl von Abfrage-Timeout-Ausnahmen führt dazu, dass die Website hängt, und die Abfrage-Timeout-SQL-Anweisungen stammen alle aus einer Methode, bei der zufällige Daten erfasst werden; der Code ist wie folgt:

Der Code bedeutet ungefähr: 10 Datenstücke werden zufällig aus der Datenbank ausgewählt, solange sie nicht die aktuelle ID duplizieren.

Was wie eine einfache Anforderung wirkt, hat dazu geführt, dass der Server aufgehängt hat! Die vom obigen Code erzeugte SQL-Anweisung lautet wie folgt:

Der Umsetzungsplan ist wie folgt:



Wenn die Datenbank 1 Million Daten enthält, würde sie dann nicht zuerst 999.999 Daten nehmen und dann 10 Datenstücke aus diesen 999.999 Daten?

Frag den großen Typen der DBA-Gruppe und erhalte die Antwort: "JaOh mein Gott, das muss langsam sein, und du musst diese SQL-Anweisung oft aufrufen.



Zuerst dachte ich, es sei ein EF-Problem.Tatsächlich gibt es keine gute Lösung, wenn man direkt in SQL schreibt.

Wenn ja, bitte bring es mir bei!




Vorhergehend:Das Open-Source-Projekt HtmlAgilityPack implementiert den C#-Webcrawler
Nächster:HCIA Lernvideos 2019
Veröffentlicht am 25.04.2019 17:07:00 |
gelehrt
Veröffentlicht am 26.04.2019 09:20:13 |
Im Programm gibt es zehn Zufallszahlen, und SQL in dieser Zahl ist perfekt
Veröffentlicht am 26.04.2019 13:08:53 |
Ich lernte~~~~~~~~~~~~~~~~
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com