Frage

Ich betreibe eine Online-Fotografie-Community, und es scheint, dass die Website auf den Datenbankzugriff zu einem Schleichen zieht, manchmal Timeouts zu treffen.

Ich halte mich für ziemlich kompetente Schreiben von SQL-Abfragen sein und die Gestaltung Tabellen, aber ich bin keineswegs ein DBA bedeutet ... daher das Problem.

Einige Hintergrundinformationen:

  1. Meine Website und SQL-Server auf einem Remote-Host ausgeführt werden. Ich aktualisiere die ASP.NET-Code von Visual Studio und die SQL über SQL Server Mgmt. Studio Express. Ich habe nicht den physischen Zugriff auf den Server.

  2. Alle meine gespeicherten Procs (ich glaube, ich habe sie alle) in Transaktionen gewickelt.

  3. In der Haupttabelle ist nur 9400 Datensätze zu diesem Zeitpunkt. Ich füge 12 neue Datensätze jede Nacht zu dieser Tabelle.

  4. Es ist ein Blick auf dieser Haupttabelle, die zusammen Daten aus mehreren anderen Tabellen in eine einzige Ansicht bringt.

  5. Sekundärtabellen sind kleinere Datensätze, aber mehr von ihnen. 70000 in einem, 115.000 in einem anderen. Dies sind Kommentare und Bewertungen Datensätze für die Elemente in # 3.

  6. Indizes sind auf den benötigten Felder. Und ich setzte sie auf Auto Recompute Statistiken zu den großen Tabellen.

Wenn die Seite zum Stillstand kommt, wenn ich Code ausführen, das Transaktionsprotokoll zu löschen, aktualisieren Sie Statistiken, den Wiederaufbau der Hauptansicht sowie die gespeicherte Prozedur erstellen Sie die Kommentare zu erhalten, die Geschwindigkeit zurückkehrt. Ich habe dies jedoch manuell zu tun.

Leider meine Nutzer frustriert zu diesen Themen und ihre Teilnahme schwindet.

Also meine Frage ist ... in einer Remote-Umgebung, was ist der beste Weg, einen Wartungsplan einzurichten und planen meine SQL db läuft an seiner Spitze zu halten ???

Vielen Dank! KLK

War es hilfreich?

Lösung

Sie müssen nicht Ihre Wartungsaufgaben als Wartungsplan einzurichten.

Sie einfach eine gespeicherte Prozedur erstellen, die die Wartungsaufgaben ausführen Sie ausführen möchten, Index neu erstellt, Statistiken Updates etc.

Dann einen Job erstellen, die gespeicherte Prozedur / s aufruft. Der Job kann so konfiguriert werden, auf dem gewünschten Zeitplan ausgeführt werden.

Um einen Auftrag zu erstellen, verwenden Sie die Prozedur sp_add_job.

ein Zeitplan zu erstellen, das Verfahren sp_add_schedule verwenden.

hoffe ich, was ich detailliert habe, ist klar und verständlich, aber das Gefühl frei, mir eine Zeile zu löschen, wenn Sie weitere Hilfe benötigen.

Cheers, John

Andere Tipps

Mein Bauch sagt man etwas falsch machen. Es klingt ein bisschen wie jene Geschichten, die Sie hören, wo einige System kann, wenn Sie den Server jede Nacht nicht aufbleiben Neustart: -)

Etwas mit Ihren Fragen falsch ist, ist die Anzahl der Zeilen, die Sie haben fast immer irrelevant, um die Leistung und Ihre Datenbank ist ohnehin sehr klein. Ich bin nicht allzu vertraut mit SQL Server, aber ich glaube, es ein paar ziemlich süß Abfrage-Analyse-Tools hat. Ich stelle mir es auch eine Möglichkeit der Protokollierung langsame Abfragen hat.

I klingt wirklich wie Sie einen fehlenden Index haben. Sicher, dass Sie vielleicht denken, dass Sie die richtigen Indizes hinzugefügt haben, aber bis Sie das überprüfen verwendet werden, spielt es keine Rolle. Vielleicht denken Sie, die richtigen, aber Ihre Fragen vorschlagen anders.

Als erstes herauszufinden, wie Ihre Abfragen zu protokollieren. Quoten sind sehr gut, Sie haben einen Killer bekommen dort eine sequentielle Scan zu tun, dass ein Index würde beheben.

Zweitens, Sie vielleicht ein paar kleine Fragen haben, die es stattdessen töten. Zum Beispiel könnten Sie einige „User“ zum Gegenstand haben, der die Datenbank trifft jedes Mal, wenn Sie einen Benutzernamen aus einer user_id nachschlagen. Suchen Sie nach Stellen, an denen Sie die Datenbank hundertmal abfragen und ersetzen Sie es mit einem Cache -. Auch wenn das „Cache“ ist nichts mehr als eine private Variable, die am Ende einer Anfrage gewischt werden

Unterm Strich ist, bezweifle ich wirklich etwas falsch konfiguriert in der SQL Server. Ich meine, wenn Sie hat den Server jede Nacht neu zu starten, da das System zum Erliegen gekommen, würden Sie das System oder Ihren Code schuld? Gleicher Deal hier ... lernt die Tools von SQL Server zur Verfügung gestellt, ich wette, sie sind ziemlich glatt: -)

Das alles gesagt, wenn Sie akzeptieren Sie etwas falsch machen, genießen Sie den Prozess. Nichts für mich ist, funner dann langsam Datenbankabfragen zu optimieren. Es ist einfach erstaunlich Sie eine Abfrage mit einer 10 Sekunden Laufzeit nehmen und es in eine mit einer 50 ms Laufzeit mit einem einzigen, gut platzierte Index.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top