Frage

Ich habe eine einzige Datenbank von etwa 4,5 GB auf einem Server mit 8 GB RAM. Die überwiegende Mehrheit der Tabellen ist MyISAM (ca. 4,3 GB), aber ich bin bald Konvertieren Einige von ihnen nach InnoDB. (Es wird ein langsamer Prozess sein, der sich zunächst auf die schreibintensivsten Tabellen konzentriert.)

Stimmt etwas falsch daran, einen dedizierten Server auszuführen, auf dem beide Arten von Speichermotoren existieren?

War es hilfreich?

Lösung

Da ist nichts falsch Mit der Verwendung mehrerer Speichermotoren auf derselben physischen Maschine, solange Sie die Vor- und Nachteile der einzelnen verstehen. Für alle Plugin -Speichertypen gibt es Leistungsüberlegungen, Merkmalsbeschränkungen und Anwendungsfälle.

Wenn Sie beispielsweise einen kleinen Tisch haben, der 90% schreibt, können Sie MyISAM wählen. Wenn die Daten leicht regeneriert werden können und es sich um eine kleine Tabelle handelt, beispielsweise für die Warteschlange, können Sie den Speicher wählen. Wenn Sie eine Tabelle haben, die zu 90% liest und die Daten dort sein müssen, wenn Sie danach suchen, würden Sie wahrscheinlich eine Speicher -Engine auswählen, die Transaktionen und konfigurierbare Atomizität wie InnoDB unterstützt. Wenn Sie über das Dateisystem mit schädlichen Daten zu Barrierefreiheit möchten, können Sie CSV auswählen.

Trotzdem können Sie mehrere Speichermotoren im selben Schema sowie im physischen Wirt sicher verwenden.

Lassen Sie mich jedoch feststellen, dass Ihre Puffer in diesem ganzen Durcheinander eine Rolle spielen. Wenn Sie sowohl MyISAM als auch InnoDB verwenden, müssen Sie darauf achten, dass Ihre KEY_BUFFER und INNODB_BUFFER_POOL nicht kämpfen. Dies wird Ihre Rolle sorgfältig planen, aber das ist es, was wir tun.

Andere Tipps

Ich kann Ihnen nicht sagen, ob dies eine gängige Praxis ist. Ich kann über meine eigenen Erfahrungen sagen.

Ich benutze immer das beste Werkzeug für den Job, also mische ich die ganze Zeit Motoren. Die meisten meiner Projekte verwenden MyISAM als Standard -Engine.

Wenn ich spezielle Funktionen brauche, die gerade auf InnoDB erhältlich sind, mache ich mich dafür.

Wenn eine Tabelle größtenteils schreibgeschützt ist, wähle ich Archive Engine, bevor ich blinzeln kann.

Wenn Sie wissen, dass der Maschinenserver über genügend Speicher verfügt, werden alle meine TEMP -Daten auf Heap -Tabellen gespeichert.

Ich habe in der Vergangenheit einige Verlangsamungen gesehen, die MyiSam und InnoDB gemischt haben, aber dies ist kein bestimmtes MySQL -Problem. Es ist ein Designproblem, das nicht so schien, wenn Sie nur einen Motor verwenden. Die Verwendung der falschen Motors führt zu einer Verlangsamung von mehr Verlangsamungen egal, ob es sich nur um MyISAM handelt, nur innoDB oder eine Mischung aus beiden. Es ist schwer, eine Formel zu definieren, um zu wissen, wann die Verlangsamung stattfinden würde. Nur tatsächliche Tests könnten es Ihnen sagen.

Natürlich konnten Sie Integrität und Konsistenz bei einer einzigartigen Anfrage nicht bewahren, indem Sie InnoDB und MyISAM mischen.

Ich versuche zu vermeiden, MyISAM- und InnoDB -Tabellen in derselben Datenbank zu mischen, aber dies stammt eher aus geistiger und praktischer Gründe. Ich finde es jedoch nützlich, eine Datenbank mit MYISAM -Tabellen für die FullText -Suche zu haben, damit ich diese auf Websites ausführen kann. Wenn Sie es für jeden Eintrag in einer separaten Datenbank mit einem fremden Schlüssel für jeden Eintrag aufbewahren, können Sie jedem anderen Entwickler, der auf der DB arbeitet, zu sehen, was los ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top