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

akBenutzer

Aktives Mitglied
24. April 2017
98
6
#1
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.025
203
Halle
#3
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

Aktives Mitglied
24. April 2017
98
6
#4
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.025
203
Halle
#5
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.
 
Zustimmungen: akBenutzer
24. April 2017
98
6
#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.
 

Ähnliche Themen