Wir verwenden C# und Linq2SQL, um Daten aus einer Datenbank für einige Berichte zu erhalten. In einigen Fällen dauert dies eine Weile. Mehr als 30 Sekunden, das scheint der Standard CommandTimeout
zu sein.C#, Linq2SQL: Wie lange sollte CommandTimeout sein und wo sollte es eingestellt werden?
Also, ich denke, ich muss die CommandTimeout
. Aber die Frage ist, wie viel? Ist es schlecht, es sehr hoch zu setzen? Wäre es nicht schlecht, wenn ein Kunde versucht, etwas zu tun, und nur weil er viel mehr Daten in seiner Datenbank hatte als der durchschnittliche Kunde, der seine Berichte wegen Zeitüberschreitungen nicht bekommen konnte? Aber wie kann ich wissen, wie viel Zeit es möglicherweise dauern könnte? Gibt es eine Möglichkeit, es ins Unendliche zu setzen? Oder wird das als sehr schlecht angesehen?
Und wo soll ich es einstellen? Ich habe eine statische Datenbankklasse, die einen neuen Datenkontext für mich generiert, wenn ich ihn brauche. Kann ich einfach eine Konstante erstellen und einstellen, wenn ich einen neuen Datenkontext erzeuge? Oder sollte es je nach Anwendungsfall unterschiedliche Werte haben? Ist es schlecht, eine hohe Auszeit für etwas zu haben, das nicht viel Zeit in Anspruch nimmt? Oder ist es nicht wirklich wichtig?
Zu hoch ConnectionTimeout
kann natürlich nerviger sein. Aber gibt es einen Fall, in dem ein Benutzer/Kunde eine Auszeit wünscht? Kann der SQL Server einfrieren, so dass ein Befehl niemals beendet wird?
Wie kann ich die Indexierungsstrategie überprüfen? Es gibt derzeit keine Indizes hinzugefügt, denke ich, aber wie kann ich sehen, wo ich sie hinzufügen sollte? (Sind Primärschlüssel bereits indiziert?) – Svish