2009-03-18 4 views
3

Ich habe eine Logging-Tabelle, die die Benutzer-ID, Datum/Uhrzeit, Tabellenname, Datensatz-ID, Abfragetyp (einfügen, aktualisieren, löschen, usw.) und die vollständige SQL, die ausgeführt wurde. Es gibt ein paar Schlüssel auf diesem Tisch, aber sie müssen nicht sofort aktualisiert werden. Typischerweise wird die Tabelle verwendet, um entweder nach Problemen zu suchen (jemand machte einen Fehler oder es gab einen Systemfehler) oder um Leute zu überprüfen, welche Änderungen vorgenommen wurden. In der Regel werden diese jedoch nicht sofort nach dem Speichern ausgeführt, oder sie werden nur einmal pro Woche oder einmal am Tag ausgeführt.Verwenden von DELAY_KEY_WRITE in MySQL: Sollte ich es verwenden? Gibt es noch etwas, das ich ändern muss?

Ist das Einschalten DELAY_KEY_WRITE auf einem Tisch wie dies nützlich wäre?

Gibt es noch etwas, das ich meinen Code auf MySQL oder innerhalb oder fügen Sie aktivieren müssen? Ich war reading here, dass Sie den Startparameter --myisam-recover verwenden müssen. Ist das der Fall?

Antwort

3

Möglicherweise, aber warum? Wenn die Einträge hier von Leuten geschrieben werden, die tippen (wie es scheint), werden Sie auf keinen Fall eine Maschine überladen, die nach 1985 hergestellt wurde, es sei denn, Sie verwenden ein Netbook oder Ihr Mobiltelefon als Datenbankserver.

Wenn Sie fest genug auf die Leistung, die Sie betrachten Dinge wie dies zu tun, würde ich vorschlagen, dass Sie zuerst eine Profilierung tun, um zu sehen waren, sind die Probleme tatsächlich. Wenn Sie sind nicht sich Gedanken über die Leistung, was ist die Motivation für die Suche in DELAY_KEY_WRITE?

Ein paar mehr Gedanken als Antwort auf Ihre Kommentare:

  • 1000s Aufzeichnungen ist eine Minute in der Größenordnung von Millionen von Datensätzen pro Tag. Wie werden die Leute sie "überprüfen"?
  • Das ist in der Größenordnung von Gigabytes pro Monat. Was werden Ihre Aufbewahrungsrichtlinien sein?
  • Muss das Protokoll tatsächlich indiziert oder sogar in einer Tabelle gespeichert werden? Könnten die Systemprotokollierungsfunktionen geeigneter sein?
  • Würde das Protokollieren der Informationen an verschiedenen Orten (ein Debug-Protokoll, eine Review-Warteschlange, eine Übersichtstabelle usw.) helfen?
  • Es ist unwahrscheinlich, dass Ihr System bei dieser Rate tatsächlich aussagekräftige Protokollinformationen erzeugt. Wie realistisch sind Ihre Lastschätzungen und wie viel davon wird überflüssig/überflüssig sein?
+0

Also, ich denke, Sie sagen, dass es nicht so viel kostet bieten eine Leistungssteigerung? –

+0

Nein, er sagt, wenn Sie die zusätzliche Leistung nicht brauchen, sollten Sie sich nicht mit merkwürdigen Stimmreglern beschäftigen, die aus einem bestimmten Grund nicht standardmäßig eingeschaltet sind. – kquinn

+0

Nun, ich implementiere diese Idee auf einer neuen Seite, wo jede Minute Tausende von Datensätzen zur Tabelle hinzugefügt werden können. Nicht viel, wenn das der einzige Tisch war. –

Verwandte Themen