Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Speicher-Engine für Protokolltabelle

Nun, Ihrer Frage nach sollte InnoDB die Arbeit erledigen, weil:

  1. Die Skalierbarkeit ist viel besser als bei MyISAM
  2. Es ist zeilensperrend, daher passt es besser, wenn Sie mehr Schreibvorgänge als Auswahlen haben werden.
  3. Abschließend, da Sie gesagt haben, dass selten auf sie zugegriffen wird, ist MyISAM nicht erforderlich, da es bei ausgewählten Abfragen besser ist.

Überprüfen Sie dies für weitere Informationen

BEARBEITEN

Nun, im Kommentar fragen Sie nach anderen Motoren. Hier ist eine vollständige Liste von Motoren. Darunter hat das Archiv, wie Sie sagten, einen Nachteil, die anderen passen nicht zu Ihrer Anfrage. Hier ist ein Zitat von der MySQL-Website:

InnoDB has been designed for maximum performance when processing large data volumes. 
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.

Also im Grunde:

  1. Wenn Sie MEMORY verwenden, tun Sie dies nicht, wie Sie gesagt haben, Sie werden nicht viel auf Daten zugreifen und Ihre Tabelle wird zu stark wachsen. Dafür benötigen Sie viel RAM und beim Neustart gehen alle Daten verloren.
  2. Wenn Sie MyISAM verwenden wollen, tun Sie dies nicht, da es für Tabellen entwickelt wurde, die Abfragen auswählen, die häufiger sind als Einfügen und Aktualisieren.
  3. Das Archiv ist Ihre Wahl. Hier ist ein Vergleich zwischen MyISAM und Archiv für eine Protokolltabelle. Ich würde aber bei InnoDB bleiben.
  4. Ich werde Merge, Blackhole, Example und andere Engines nicht einmal erwähnen. (Ich habe nicht viel Wissen über die CSV-Engine, aber soweit ich gelesen habe, ist dies keine geeignete Engine für diese Art von Tabelle.

Um ehrlich zu sein, verbrachte ich viel Zeit damit, bevor ich einen wichtigen Schritt in der Programmierung machte. Ich habe stundenlang, vielleicht tagelang über ein Problem recherchiert, um zu sehen, welcher Weg der geeignetste ist. Ich sage Ihnen was, Recherchieren ist gut, aber wenn es Sie irgendwann am Arbeiten hindert, sollten Sie aufhören, einen Kaffee trinken und sofort Ihre Wahl treffen. Probieren Sie daher einfach den für Sie am besten geeigneten aus, und wie Sie feststellen werden, werden Sie einen noch besseren Weg finden, indem Sie es selbst versuchen. Ich meine, ich glaube nicht, dass Facebook für ein solches Volumen konzipiert wurde, aber als es wuchs, änderten sie die Struktur entsprechend weiter. Das ist, was ich glaube, aber vielleicht nicht die Realität :) Wie auch immer, hoffe, dass die Informationen dir helfen.

BEARBEITEN 2013

Nachfolgend finden Sie kurze Beschreibungen für integrierte MySQL-Speicher-Engines.

MyISAM

Diese Tabellen enthalten zusätzliche Optimierungen wie erweiterte Cache- und Indizierungsmechanismen, die einen schnellen Zugriff auf Daten ermöglichen. Unter Verwendung von Sperren auf Tabellenebene sorgt die MyISAM-Speicher-Engine für gleichzeitige Operationen. Wenn es um die Leseleistung geht, ist MyISAM im Allgemeinen die Wahl.

Erinnerung

Speichertabellen, auch Heap-Tabellen genannt, eignen sich ideal zum schnellen Abrufen häufig verwendeter Daten, die selten geändert werden (z. B. Ländercodes, Postleitzahlen oder andere Nachschlagetabellen). Wie der Name schon sagt, werden Daten im Arbeitsspeicher gespeichert und daher ist der Zugriff viel schneller als auf Festplatten gespeicherte Daten. Eine wesentliche Einschränkung für die Verwendung von Speicher besteht darin, dass Daten während einer MySQL-Sitzung gültig sind. Wenn es abstürzt oder heruntergefahren wird, gehen Daten verloren.

InnoDB

Ein Fall, in dem Sie diese Speicher-Engine verwenden müssen, ist, wenn Sie Fremdschlüssel oder Transaktionen verwenden müssen. InnoDB ist gleichzeitiger als MyISAM, da es Sperren auf Zeilenebene bereitstellt. Die Speicher-Engine ist sehr zuverlässig. Ein weiterer Fall, in dem Sie diesen Speicher verwenden möchten, ist, wenn Sie mehr Schreib- als Lesevorgänge haben. Wenn Sie häufig Daten in die Tabelle schreiben, versuchen Sie, diesen Speicher zu verwenden, da er gleichzeitiger ist als MyISAM.

Archivieren

Es wurde entwickelt, um große Datenmengen in einem komprimierten Format zu speichern. Einer der Anwendungsfälle dieser Speicher-Engine ist das Speichern von archivierten oder historischen Daten oder Sicherheitsprotokollen. Die Tabelle verwendet keine Indizes, daher ist sie für den täglichen Datenabruf und die Speicherung keine gute Wahl. Es handelt sich um eine Sperrung auf Zeilenebene, und Daten werden bei Bedarf im laufenden Betrieb dekomprimiert. Außerdem ist eine Änderung der Tabelle nicht möglich.

Zusammenführen

Zusammenführen wird verwendet, um partitionierte Tabellen, die sich auf derselben Maschine befinden, zusammenzuführen. Wenn Sie eine große Tabelle in mehrere kleinere Tabellen aufteilen und mithilfe einer Zusammenführungstabelle gleichzeitig auf sie zugreifen, ist der größte Vorteil die Geschwindigkeit. Suchen und Sortieren werden schneller ausgeführt, da weniger Daten in Tabellen vorhanden sind.