{"id":50,"date":"2008-03-12T09:29:14","date_gmt":"2008-03-12T08:29:14","guid":{"rendered":"http:\/\/blog.till.de\/2008\/03\/12\/storage-engines\/"},"modified":"2008-03-12T09:29:14","modified_gmt":"2008-03-12T08:29:14","slug":"storage-engines","status":"publish","type":"post","link":"https:\/\/blog.till.de\/allgemein\/storage-engines\/","title":{"rendered":"Storage Engines"},"content":{"rendered":"

Wenn man eine MySQL-Tabelle erstellt kann man neben den Feldern und Indizes<\/a> auch die Storage Engine<\/em>, also die Art, wie die Daten gespeichert werden, angeben. In den meisten F\u00e4llen ist man mit der Standardeinstellung gut bedient, aber es gibt auch F\u00e4lle, bei denen es sich lohnt sich bewusst f\u00fcr eine andere Engine zu entscheiden. Am Beispiel von MyISAM<\/em> und InnoDB<\/em> sollen in diesem Beitrag kurz ein paar Unterschiede und Anwendungsgebiete aufgezeigt werden.<\/p>\n

<\/p>\n

F\u00fcr die Auswahl der „richtigen“ Storage Engine ist es wichtig, sich dar\u00fcber klar zu werden wie auf die Daten zugegriffen werden soll (prim\u00e4r lesend oder viele Schreibzugriffe?), ob man mit mehreren Tabellen arbeitet und hier die Konstistenz der Daten wichtig ist (Stichworte: Transaktionen, Fremdschl\u00fcssel) oder ob man bestimmte Features braucht, die vielleicht nicht in allen Engines vorhanden sind.<\/p>\n

MyISAM<\/h4>\n

MyISAM ist die Standard-Engine beim Anlegen einer MySQL-Tabelle und f\u00fcr die meisten Anwendungen, bei denen haupts\u00e4chlich lesend auf die Daten zugegriffen wird, auch die richtige Wahl. Da die Interne Verwaltung der Zugriffe so einfach wie m\u00f6glich gehalten ist, gibt es kaum einen Überschuss bezogen auf die einzelne Anfrage. Allerdings bedeutet das auch, dass beim Schreiben\/??ndern eines Datensatzes die gesamte Tabelle erstmal gegen alle anderen Zugriffe gesperrt wird, was vor allem bei vielen „gleichzeitigen“ Zugriffen zu langen Antwortzeiten f\u00fchrt.<\/p>\n

Transaktionen oder Fremdschl\u00fcsselverkn\u00fcpfungen sind unter MyISAM nicht<\/em> m\u00f6glich.<\/p>\n

MyISAM bietet daf\u00fcr mit dem Volltextindex als einzige Storage Engine eine besondere Form der Indizierung an. Dabei wird ein Index \u00fcber die einzelnen W\u00f6rter in den ausgew\u00e4hlten Feldern erstellt, was die Suche nach einem Wort extrem beschleunigt. Allerdings funktioniert das nur f\u00fcr ganze W\u00f6rter. Will man nach Wortbestandteilen suchen muss man doch wieder auf eine LIKE-Abfrage zur\u00fcckgreifen, die dann nat\u00fcrlich entsprechend l\u00e4nger dauert.<\/p>\n

InnoDB<\/h4>\n

InnoDB verwaltet die Zugriffe sehr komplex, was bei jedem Zugriff zu einem hohen Aufwand (seitens der Storage Engine) f\u00fchrt. Allerdings ist es dadurch m\u00f6glich viele gleichzeitige Zugriffe (insbesondere schreibende) auszuf\u00fchren, weil immer nur der einzelne Datensatz zur Bearbeitung gesperrt wird.<\/p>\n

Transaktionen oder Fremdschl\u00fcsselverkn\u00fcpfungen sind ein Hauptbestandteil von InnoDB, wobei aber anzumerken ist, dass das nur funktioniert wenn alle<\/strong> beteiligten Tabelle InnoDB als Storage Engine verwenden.<\/p>\n

Fazit<\/h4>\n

Neben MyISAM und InnoDB gibt es noch eine ganze Reihe weiterer Storage Engines f\u00fcr MySQL, die normalerweise in dem weiten Raum zwischen den beiden „Extremen“ anzusiedeln sind. Welche Engine im konkreten Fall die bessere ist ist je nach Anforderungen individuell abzuw\u00e4gen und eventuell auch zu testen. Allgemein l\u00e4ßt sich aber sagen, dass bei einem hohen Anteil an schreibenden Zugriffen (z.B. Foren oder Besucherstatistiken) eher in Richtung InnoDB zu gehen ist.<\/p>\n","protected":false},"excerpt":{"rendered":"

Wenn man eine MySQL-Tabelle erstellt kann man neben den Feldern und Indizes auch die Storage Engine, also die Art, wie die Daten gespeichert werden, angeben. In den meisten F\u00e4llen ist man mit der Standardeinstellung gut bedient, aber es gibt auch F\u00e4lle, bei denen es sich lohnt sich bewusst f\u00fcr eine andere Engine zu entscheiden. Am… Weiterlesen »Storage Engines<\/span><\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[],"tags":[24],"_links":{"self":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":0,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/50\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/media?parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/categories?post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/tags?post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}