Neu JTL-Shop 4 - Tabelle von MyISAM auf InnoDB umstellen

akBenutzer

Gut bekanntes Mitglied
24. April 2017
104
7
Hallo,

weiß jemand ob ich in meinem JTL- Shop 4 die Tabellen von MyISAM auf InnoDB umstellen kann? Werde ich Probleme mit dem Connector bekommen? Weiß jemand auf was ich hier achten muss, falls dies schon jemand unternommen hat?

Danke und viele Grüße
Artur
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.056
216
Halle
Hallo Artur,
bei der Umstellung der Tabellen von MyISAM auf InnoDB gibt es ein paar Fallstricke, auf die du achten solltest. Je nach Version deiner MySQL-DB unterstützt der InnoDB-Tablespace ggfs. (noch) keine Volltext-Indizes. Wenn du also in einem Shop 4.05/06 die Volltextsuche aktiviert hast, wirst du beim Umstellen der Tabellen Probleme bekommen.
Standardmäßig verwendet der JTL-Shop in den 4er Versionen zwar keine Fremdschlüssel in den Tabellen, für Plugins kann ich das jedoch nicht ausschließen. Während MyISAM referentielle Integrität zwar syntaktisch akzeptiert, ansonsten aber vollkommen ignoriert, wird diese bei InnoDB sehr streng durchgesetzt. Hier könnte es also Probleme geben, wenn Schlüssel und/oder Daten nicht zueinander passen.
Ansonsten solltest du darauf achten, die Tabellen im ursprünglichen Zeichensatz und mit den gleichen Kollationen zu migrieren.
Aus Anwendungssicht ist es dann grundsätzlich egal, welche Engine der Server für die Tabellen verwendet, so dass es dort keine Probleme geben sollte. Im Frontend könntest du sogar Vorteile haben, da InnoDB bei vielen gleichzeitigen DB-Zugriffen etwas effizienter arbeitet als das File-basierte MyISAM. Beim Sync mit der Wawi wirst du dich jedoch auf erhebliche Performance-Einbrüche einstellen müssen. InnoDB arbeit Transaktionssicher und macht standardmäßig nach jedem DML einen Auto-Commit, der die Abgleichgeschwindigkeit durchaus um den Faktor 10 verschlechtern kann. Das Auto-Commit kannst du auch nicht einfach ausschalten, da der JTL-Shop intern (noch) keine Transaktionen unterstützt und damit die finalen Commits fehlen würden.

Der JTL-Shop5 wird eine Migration aller Tabellen auf InnoDB mit UTF-8 durchführen und im Sync-Bereich mit Transaktionen arbeiten, um die gen. Performance-Probleme zu umgehen.
 

akBenutzer

Gut bekanntes Mitglied
24. April 2017
104
7
Hallo,
Schade, dass es hier noch die genannten Defizite bei dem JTL- Shop gibt.
Primär relevant scheint mir hier die ggf. nicht vorhandene Datenkonsistenz (Fremdschlüssel) zu sein.

Den angeführten Punkt mit der Transaktionssteuerung bzw. Auto-Commit kann ich nicht nachvollziehen bzw. bestätigen.
MyISAM unterstützt keine Transaktionen. Prinzipiell ist es so, dass jedes DML-Statement (INSERT, UPDATE, DELETE) sofort ausgeführt wird.
MyISAM verhält sich daher sozusagen in einem Auto-Commit Modus. InnoDB verhält sich bei aktivem Auto-Commit (dieser ist Standard)
identisch. Daher sollte sich die Umstellung für die Applikation (JTL-Shop) transparent verhalten.

Oder übersehe ich hier noch etwas?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.056
216
Halle
Hallo,
Den angeführten Punkt mit der Transaktionssteuerung bzw. Auto-Commit kann ich nicht nachvollziehen bzw. bestätigen.
MyISAM unterstützt keine Transaktionen. Prinzipiell ist es so, dass jedes DML-Statement (INSERT, UPDATE, DELETE) sofort ausgeführt wird.
MyISAM verhält sich daher sozusagen in einem Auto-Commit Modus. InnoDB verhält sich bei aktivem Auto-Commit (dieser ist Standard)
identisch. Daher sollte sich die Umstellung für die Applikation (JTL- Shop) transparent verhalten.

Oder übersehe ich hier noch etwas?
Das das aus Anwendungssicht "egal" ist habe ich ja geschrieben. Worauf ich aber aufmerksam machen wollte ist die Tatsache, dass InnoDB im Auto-Commit-Modus um einen deutlichen Faktor langsamer ist als MyISAM. Das macht sich dann vor allem im Wawi-Sync bemerkbar, da dort massenhaft DML-Statements ausgeführt werden, die alle einzeln commited und auf die Platte geschrieben werden. MyISAM verwendet da eine andere Schreibstrategie, so dass diese Engine - bei äußerlich gleichem Verhalten - im Schreibzugriff schneller ist.
 
  • Gefällt mir
Reaktionen: akBenutzer

akBenutzer

Gut bekanntes Mitglied
24. April 2017
104
7
Auf https://guide.jtl-software.de/jtl-shop/jtl-shop-kauf-editionen/jtl-shop-neu-installieren/ liest man, dass heute beide Datenbanken - MySQL und MariaDB - unterstützt werden.

Die beiden Datenbanken entwickeln sich jedoch auseinander und eine einfache Migration ist bei höheren Versionsnummern zukünftig eventuell nicht mehr möglich. Welche Datenbank wird strategisch
weiterverfolgt?
Ich frage, da es uns derzeit noch möglich ist von MySQL auf MariaDB zu wechseln.
 

Inge

Aktives Mitglied
21. Juni 2014
68
8
Bad Kissingen
Für MySQL sind im kommerziellen Einsatz Lizenzen an Oracle abzuführen. War ja auch klar. Siehe Oracle mit Sun... Java bei Android...

Deswegen wechseln viele Hersteller zur MariaDB, die quasi auf MySQL basiert, aber vollständig Open-Source bleiben möchte und auch im kommerziellen Einsatz keine Lizenz benötigt.

Da JTL sicherlich keine Oracle-Lizenzen einkaufen geht, sehe ich die Zukunft eher bei MariaDB. Das macht das Produkt ingesamt billiger und bleibt dem Kunden dann überlassen, ob er wechseln möchte.
 
  • Gefällt mir
Reaktionen: akBenutzer

Über uns

  • In unserem moderierten JTL-Forum könnt Ihr Euch themenbezogen mit der JTL-Community rund um die Produkte von JTL, passende Erweiterungen und den E-Commerce im Allgemeinen austauschen, Tipps und Tricks teilen sowie Verbesserungswünsche und Fehler diskutieren.

    Unsere Forumsnutzer helfen sich untereinander auch gerne weiter, wenn Sie mal nicht weiterkommen oder einen Ratschlag benötigen.

Schnell-Navigation

Benutzer Menü