Frage

Nach dem einen Artikel über das Thema von O‘ Reilly , wollte ich Stack-Überlauf für ihre Gedanken zu diesem Thema stellen.

War es hilfreich?

Lösung

Schreiben Sie lokal auf der Festplatte, dann Masseneinfügemodus in die Datenbank regelmäßig (zum Beispiel bei log Rollzeit). Tun Sie das in einem separaten, mit niedriger Priorität Prozess. Effiziente und robuste ...

(Stellen Sie sicher, dass Ihre Datenbank-Log-Tabelle eine Spalte für enthält, die durch die Art und Weise „die Maschine des Protokoll Ereignis herkommt!“ - sehr praktisch)

Andere Tipps

würde ich sagen, nein, da ein ziemlich großer Prozentsatz der Serverfehler beinhalten Probleme mit Datenbanken kommunizieren. Wenn die Datenbank auf einem anderen Rechner waren, Netzwerk-Konnektivität wäre eine weitere Fehlerquelle, die nicht protokolliert werden.

Wenn ich Server-Fehler in eine Datenbank anzumelden, wäre es entscheidend sein, einen Backup-Logger zu haben, die lokal geschrieben (in einem Ereignisprotokoll oder eine Datei oder etwas), falls die Datenbank war nicht erreichbar.

DB Log, wenn Sie können und es Ihre DB nicht bremsen:)

Es ist viel Art und Weise viel schneller etwas in DB zu finden dann in Log-Dateien. Vor allem denken, wenn Sie im Voraus, was Sie benötigen. Anmelden bei db lässt Sie Abfrage-Log-Tabelle wie folgt aus:

select * from logs
where log_name = 'wcf' and log_level = 'error'

dann, nachdem Sie Fehler finden Sie den ganzen Weg zu sehen, die zu diesem Fehler führen

select * from logs
where contextId = 'what you get from previous select' order by timestamp

Wie werden Sie diese Informationen, wenn Sie es in Text-Log-Dateien?

Edit: Wie JonSkeet diese Antwort vorgeschlagen wäre besser, wenn ich festgestellt, dass man sollte bedenken Protokollierung machen asynchron db. Also habe ich es sagen, :) Ich kann es einfach nicht brauchen. Zum Beispiel, wie man es tun können Sie „Ultra Fast ASP.NET“ von Richard Kiessig überprüfen.

Wenn die Datenbank-Produktionsdatenbank ist, ist dies eine schreckliche Idee. Sie wird haben Probleme mit Backups, Replikation, Recovery. Wie mehr Speicherplatz für DB selbst, Repliken, wenn überhaupt, und Backups. Mehr Zeit zum Einrichten und Restore-Replikation, mehr Zeit Sicherungen, um zu überprüfen, mehr Zeit DB von Backups wiederherzustellen.

Es ist wahrscheinlich keine schlechte Idee, wenn Sie die Protokolle in einer Datenbank wollen, aber ich würde nicht sagen, um den Artikel Rat zu befolgen, wenn Sie eine Menge von Protokolldateieinträgen haben. Das Hauptproblem ist, dass ich Probleme Dateisysteme halten mit Protokollen gesehen habe von einer langen Seite kommen allein eine Datenbank lassen. Wenn Sie das wirklich tun möchte ich auf das Laden der Protokolldateien in die Datenbank aussehen würde, nachdem sie zum ersten Mal auf die Festplatte geschrieben werden.

Denken Sie an eine ordnungsgemäß Setup-Datenbank, die RAM für liest nutzt und schreibt? Das ist so viel schneller als auf die Festplatte zu schreiben und würde die Festplatte nicht vorhanden IO Engpass Sie sehen, wenn eine große Anzahl von Kunden dienen, die auftritt, wenn Threads aufgrund der OS Sperren beginnen, sie zu sagen ausgeführter Threads warten auf zur Zeit, die alle verfügbaren IO verwenden behandelt.

Ich habe kein Benchmarks diese Daten zu beweisen, obwohl meine neueste Anwendung mit Datenbankprotokollierung rollt. Dies wird eine ausfallsichere, wie in einer dieser Antworten erwähnt. Wenn die Datenbankverbindung nicht erstellt werden kann, erstellen Sie lokale Datenbank (h2 vielleicht?) Und das schreiben. Dann können wir eine regelmäßige Überprüfung der Datenbankverbindung haben, die die Verbindung wieder herstellen wird, die lokale Datenbank-Dump, und drücken Sie sie in die entfernte Datenbank.

Das außerhalb der Arbeitszeit durchgeführt werden kann, wenn Sie nicht über eine H-A-Stelle haben.

Irgendwann in der Zukunft hoffe ich Benchmarks zu entwickeln, um meinen Standpunkt zu demonstrieren.

Good Luck!

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