Stimmt es, dass MyISAM-Engine mehr bevorzugt als InnoDB ist, wenn wir Clustered Storage bauen? Warum, wenn es so ist?

StackOverflow https://stackoverflow.com/questions/1647023

Frage

Ich habe gehört, das heute im Interview für Java-Entwickler. Ich hatte einige Vorteile von MyISAM über InnoDB zur Liste und warum es immer noch Wesen weit verbreitet. Und sie warteten von mir die Antwort, wie der Titel dieser Frage zu hören.

Wie ich aus der eigenen Antwort verstehen: MyISAM nicht über Fremdschlüssel und DB leicht gruppiert werden kann (eine Tabelle pro Server zum Beispiel). Aber warum können wir nicht einfach InnoDB-Tabellen ohne Fremdschlüssel erstellen? Diese explaination klingt seltsam für mich ..

War es hilfreich?

Lösung

Es gibt keinen Königsweg Antwort hier. Sie müssen die Vor- und Nachteile der einzelnen kennen, bevor Sie eine Entscheidung treffen, welche Sie für eine bestimmte Anwendung verwendet werden.

InnoDB:

  • unterstützt FK ist
  • Transaktionen unterstützt
  • verwendet einen großen Speicherpuffer für den Betrieb
  • unterstützt Zeilenebene Verriegelungs
  • hat aber eine viel höhere Wartungskosten -. Sie wirklich brauchen die Speicherauslastung zu optimieren, konfigurieren Sie Ihre Tabellendateien, usw.

MyISAM:

  • hat eine Reihe von speziellen Spalte Features, die InnoDB nicht, wie:
    • Volltextindizes
    • räumliche Spalten (Ich bin mir ziemlich sicher, dass dies nicht mit InnoDB funktioniert)
  • Sehr schnell für primäre Lese- / anhängen Anwendungsfälle (Tabellensperren für Aktualisierungen, Löschungen, aber nicht für Einsätze)
  • Auch hat in der Regel schnelle Einsätze
  • Caches Indizes in Speicher (Schlüsselpuffer), sondern stützt sich auf das Betriebssystem, die tatsächlichen Datenseiten zu puffern

Zum Beispiel würde ich InnoDB verwende für Dinge wie E-Commerce, Benutzerdatenbanken oder alles, was ich will in Transaktionen verwenden.

Für Data Warehouse, Logging, Reporting, etc. ich wahrscheinlich MyISAM verwenden würde.

Andere Tipps

  

Ich musste einige Vorteile von MyISAM über InnoDB Liste

  1. Volltextsuche

  2. ...

  3. Nein, das ist es.

(OK, gibt es einige Fälle, in denen MyISAM schneller als InnoDB ist, aber selten genug, dass es sich lohnt, mit dem Mangel an ACID-Compliance-Aufstellen. Heute ist der Hauptgrund für alles, was mit MyISAM tun ist Volltextsuche zu erhalten, die leider nicht in InnoDB unterstützt wird.)

Ich bin nicht sicher, ob dies nicht mehr der Fall MyISAM ist schneller als InnoDB für liest.

Auch MyISAM-Tabellen werden in separaten Dateien gespeichert und (von dem, was ich mich erinnern kann), können Sie tatsächlich die Dateien auf einem anderen MySQL-Datenbank transportieren und sind leichter zu sichern.

standardmäßig InnoDB-Datenbanken werden in einer großen glob auf dem Dateisystem gespeichert.

Was, warum es immer noch weit verbreitet ist, ich dachte immer es war, weil es die Standardoption ist. Ich persönlich glaube immer noch, dass die Vorteile von InnoDB triumphieren MyISAM und MyISAM hat auch Probleme mit der Datenintegrität von meiner Erfahrung.

Sie könnten sicherlich InnoDB-Tabellen ohne Fremdschlüssel erstellen, aber das Ausschneiden ist einer der wichtigsten Vorteile davon: referentielle Integrität. Da jedoch ist MyISAM nicht mit der Absicht, die referentielle Integrität Tabellenschlüssel gebaut unterschiedlich gespeichert werden, und vielleicht effizienter zu gestalten.

Es gibt auch einige Unterschiede in der Schließ- und Zutritts. InnoDB unterstützt Zeilenebene Verriegelungs, während nur MyISAM Tabellenebene Verriegelung unterstützt. In Abhängigkeit von den Fragen, die Sie gerade ausführen (WÄHLT gegen EINSÄTZE / UPDATES) dies einen spürbaren Effekt auf die Leistung haben kann.

Sie müssen prolly auf der Mysql Peformance Blog .

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