Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MySQL Index setzen bzw. aktualisieren

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    MySQL Index setzen bzw. aktualisieren
    am: 07. Juli 2017, 11:50:04
    Hallo,
    da bei meinem betreuten Shop mit steigender Datenanzahl die MySQL-Datenbank langsamer wird (Produktdetailseitenaufruf, Bestellstatus sortieren im Adminbereich etc.), möchte ich sie optimieren.
    Ich habe im Forum diverse Infos gefunden, dass man für verschiedene Tabellen einen Index setzen sollte, was bei sehr großen Onlineshops Sinn machen kann.

    Ich habe folgende "große" Tabellen mit schon hinterlegten Indizes:

    customers
    Daten - 2,028,4 KiB
    Index - 149,0 KiB - Feld customers_id PRIMARY

    customers_ip
    Daten - 789,7 KiB
    Index - 287,0 KiB - Feld customers_id INDEX, Feld customers_ip_id PRIMARY

    orders
    Daten - 9,551,4 KiB
    Index - 183,0 KiB - Feld orders_id PRIMARY

    orders_products
    Daten - 2,883,7 KiB
    Index - 207,0 KiB - Feld orders_products_id PRIMARY

    orders_status_history
    Daten - 1,257,4 KiB
    Index - 389,0 KiB - Feld orders_status_history_id PRIMARY

    orders_total
    Daten - 7,153,0 KiB
    Index - 1,821,0 KiB - Feld orders_total_id PRIMARY, Feld orders_id INDEX

    Meine Frage ist hierzu, ob sich der jeweilige Index nach einer bestimmten Zeit automatisch aktualisiert oder ob ich das manuell machen muss? Wenn ja, wie ist dies möglich?
    Hierzu konnte ich leider keine Informationen im Forum oder online finden, es wird immer nur erklärt, dass aktualisiert werden soll, aber nicht wie es genau geht.

    Wie man sieht, ist der Shop nun nicht soo groß. Würde es anhand der Daten oben dennoch Sinn machen, weitere Indizes zu setzen, wie z.B. hier aufgeführt: https://www.modified-shop.org/forum/index.php?topic=963.msg310491#msg310491 ?

    Danke für Hilfe!

    Linkback: https://www.modified-shop.org/forum/index.php?topic=37454.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #1 am: 07. Juli 2017, 12:11:48
    Wenn Du jetzt ständig neue Produkte einpflegst wird die Datenbank natürlich langsamer, der Tipp in folgenden Links kann sie wieder schneller machen.

    https://www.modified-shop.org/forum/index.php?topic=36966.msg336163#msg336163
    https://www.modified-shop.org/forum/index.php?topic=36966.msg336173#msg336173

    Gruss
    Hanspeter

    webald

    • modified Team
    • Beiträge: 2.791
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #2 am: 07. Juli 2017, 12:43:24
    wichtig ist dnicht die Größe in kB sondern die Anzahl der Datensätze

    Such mal im Netz zu mysql explain. Dann interpretieren und dann den passenden Index setzen.

    Jeder Index verlangsamt das Schreiben in Tabellen, da auch der aktialisiert werden muss. Ein falscher Index aber beschleunigt das System nicht.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #3 am: 07. Juli 2017, 13:01:20
    Danke für die Info! Werde mich über explain etc. informieren. Die Anzahl der Datensätze sind folgende:

    customers - 14,620 Einträge
    customers_ip - 13,775 Einträge
    orders - 18,092 Einträge
    orders_products - 20,519 Einträge
    orders_status_history - 38,684 Einträge
    orders_total - 91,145 Einträge

    Es wurde bisher noch nie (Shop gibt es schon seit ich denke 8 Jahren) eine Datenbankoptimierung, manuelle Änderung/Aktualisierung von Indizes etc. vorgenommen.

    Würdest du aus deiner Erfahrung heraus anhand der Werte bereits etwas optimieren oder muss/sollte vorher alles mit explain o.ä. geprüft werden?

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #4 am: 07. Juli 2017, 13:20:13
    [...]
    Meine Frage ist hierzu, ob sich der jeweilige Index nach einer bestimmten Zeit automatisch aktualisiert oder ob ich das manuell machen muss? Wenn ja, wie ist dies möglich?
    Hierzu konnte ich leider keine Informationen im Forum oder online finden, es wird immer nur erklärt, dass aktualisiert werden soll, aber nicht wie es genau geht.
    [...]

    INSERT, UPDATE und DELETE-Statements aktualisieren den Index automatisch. Also wenn du im Admin z.B. Produkte bearbeitest werden ggf. betroffene Indizes automatisch aktualisiert.

    Weiter Info hier -> http://www.php-einfach.de/mysql-tutorial/optimierung-von-mysql-verwendung-des-index/

    Gruss
    Hanspeter

    webald

    • modified Team
    • Beiträge: 2.791
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #5 am: 07. Juli 2017, 13:25:44
    Warum denkst Du, dass diese Tabellen für ein langsamer werden des Shops verantwortlich sind?

    Wo wird der Shop langsamer? Welche Tabellen werden in diesem Schritt berührt? Was ist langsamer?

    Gibt es Einträge in Protokoll-Dateien/Logs?

    Wird evtl. eine alte DB-Engine benutzt?

    Und zu guter letzt was spricht gegen ein Update auf 2.x? Da sind soviele Verbesserungen drin und v. a. Sicherheitsupdates. Gerade bei 20.000 Kundendatensäte sollte man daran sschon Interesse haben.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #6 am: 07. Juli 2017, 13:47:08
    Hallo,

    das sind die Tabellen mit den mit Abstand meisten Einträgen. Alle anderen Tabellen haben wesentlich weniger Einträge, im Regelfall unter 100. Daher verspreche ich mir hier den größten Optimierungsbedarf.

    Langsamer wird der Shop im Gesamten, vor allem aber bei der Productinfo-Seite, beim Aufruf der Bestellungen-Seite im Adminbereich, beim Sortieren des Bestellstatus im Adminbereich etc.

    Bei einem anderen Shop habe ich mit der automatischen "Optimieren"-Funktion in phpMyAdmin bereits im Browser spürbar eine schnellere Ladezeit des gesamten Shops erreicht.

    Ob die DB Engine veraltet ist, muss ich prüfen, daran habe ich noch nicht gedacht.

    Das Update auf 2.0 wird in Kürze kommen, allerdings habe ich bei anderen Shops festgestellt, dass es bei nicht optimierter Datenbank auch keine Geschwindigkeitswunder bringen kann.

    Eine Frage noch zum DB Cache. Seit der DB Cache eingeschaltet ist, werden im /cache Ordner diverse .xtc-Dateien verschiedenster Größe abgelegt. Ist es beim DB-Cache sinnvoll, die .xtc-Dateien in regelmäßigen Abständen zu löschen?

    web28

    • modified Team
    • Beiträge: 9.404
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #7 am: 07. Juli 2017, 14:53:09
    @xtc-user09

    Bei 2.x wurden diverse neue Indizes bei der DB hinzugefügt.

    Außerdem wird ab 2.0.2.3 auf MyISAM im Installer verzichtet, so dass man als Standard InnoDB hat.

    Gruss web28

    EDIT:
    Wenn du in einem Vor-2x Shop neue eigene Indizes setzt gibt es später beim Update auf ein 2.x DB Stress.

    xtc-user09

    • Schreiberling
    • Beiträge: 265
    Re: MySQL Index setzen bzw. aktualisieren
    Antwort #8 am: 09. Juli 2017, 19:22:20
    Danke für die Info - werde ich berücksichtigen.

    Meine offene Frage ist noch:

    Seit der DB Cache eingeschaltet ist, werden im /cache Ordner diverse .xtc-Dateien verschiedenster Größe abgelegt. Ist es beim DB-Cache sinnvoll, die .xtc-Dateien in regelmäßigen Abständen zu löschen?

    Viele Grüße!