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: BAUSTELLE: Zusätzliche Indizes für die Datenbank

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Ich bin bei Recherchen auf folgende Seite gestoßen: xt:Commerce – MySQL 5.0 – Performance

    Dabei wird zur Anlage folgender Indizes in der DB geraten, die die Performance steigern sollen. Wie ist eure Meinung dazu?

    Code: SQL  [Auswählen]
    ALTER TABLE shipping_status ADD INDEX ( language_id );
    ALTER TABLE products ADD INDEX ( products_startpage );
    ALTER TABLE products_to_categories ADD INDEX ( categories_id );
    ALTER TABLE orders_products ADD INDEX ( orders_id , products_id );
    ALTER TABLE zones_to_geo_zones ADD INDEX ( geo_zone_id );
    ALTER TABLE tax_rates ADD INDEX ( tax_zone_id );
    ALTER TABLE products ADD INDEX ( manufacturers_id );

    [update vr]
    Besser als der zusammengesetzte für orders_products sind 2 einzelne:

    Code: SQL  [Auswählen]
    ALTER TABLE orders_products
    ADD INDEX orders_id (orders_id),
    ADD INDEX products_id (products_id);

    ausserdem die hier:

    Code: SQL  [Auswählen]
    ALTER TABLE products_attributes
    ADD INDEX products_id (products_id),
    ADD INDEX options (options_id, options_values_id);

    ALTER TABLE specials
    ADD INDEX products_id (products_id);
    [/update vr]



    Linkback: https://www.modified-shop.org/forum/index.php?topic=963.0

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #1 am: 28. Mai 2009, 12:30:39
    Hallo DokuMan,

    danke für den Tipp.

    Kann man das gefahrlos testen und ggf. wieder löschen ?
    Wie löscht man Indizes im Notfall wieder ?

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #2 am: 28. Mai 2009, 12:45:30
    Ja könnte man.

    Löschen funktioniert z.B. mit

    Code: PHP  [Auswählen]
    ALTER TABLE 'shipping_status' DROP INDEX ( 'language_id' );
    Ich weiß nicht, ob man das mit der "Parse Time" überprüfen kann, da es doch sehr technisch wird, aber eventuell/hoffentlich wird die Zeit weniger ;)

    Schau dir auf alle Fälle mal den Link zur Seite an, da gibts noch mehr!

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #3 am: 28. Mai 2009, 12:48:42
    Alternativ geht löschen auch mit der Maus und nem Klick. =)

    Hab von den zusätzlichen Indizes auch shcon gehört... hab da aber keine eigene Meinun zu. :-P

      [ Für Gäste sind keine Dateianhänge sichtbar ]

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #4 am: 28. Mai 2009, 15:13:30
    Hier wird das Thema auch diskutiert: http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte Forenregeln beachten! ))/forum/index.php?showtopic=13604

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #5 am: 28. Mai 2009, 16:43:10
    Vorsicht, immer Backups vorm testen machen !
    Hab grad etwas getestet und z.B. das hier versucht, wollte "klein" anfangen. Ein Link aus Toms Link:
    http://isemann.de/blog/2009/03/19/performance-boost-fur-den-shop-xtcommerce-31/

    Doch es legt zumindest zum Teil Indizes an die schon vorhanden sind, Bsp.:

    Code: SQL  [Auswählen]
    ALTER TABLE 'products_description' ADD INDEX ( 'products_name' );
    Hatte zum Glück zuvor ein Backup gemacht, sonst hätte ich alles manuell durchprüfen müssen.
    Also man müsste erstmal alles "empfohlene" durchsehen, ob nicht schon vorhanden.

    @DokuMan
    Danke für den Tipp mit dem Löschen eines Indizes, hat aber leider nicht ganz funktioniert ;)
    Der Befehl zum Löschen wäre z.B so:

    Code: SQL  [Auswählen]
    ALTER TABLE 'shipping_status' DROP INDEX 'language_id';
    Komisch, dass es im MySQL Manual anders steht http://dev.mysql.com/doc/refman/5.1/de/drop-index.html - wollte bei mir aber nicht klappen.

    Aber...
    Wir müssen unbedingt den Apostroph-Fehler im Forum beheben, hatte arge Probleme beim posten und das Problem ist, wenn jemand das mit den Befehlen nachtesten möchte, dann wird das nicht funktionieren, wenn man nicht wie die Syntax das vorsieht, die schrägen Apostroph verwendet. Die schrägen werden jedoch vom Forum rausgefiltert, deshalb die Befehle so mit den geraden Apostrophen. Habs aber getestet ohne die schrägen Befehle klappt es in phpMyAdmin nicht  :cry:

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #6 am: 28. Mai 2009, 17:58:11
    Das Problem mit dem Syntax Highlighter ist Christian schon bekannt und er kümmert sich drum.

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #7 am: 28. Mai 2009, 21:14:52
    Hi speedy,

    danke fürs testen!

    Ich denke es macht keinen Sinn, die Indices schon während der Shopinstallation anzulegen, denn da sind sie ja noch leer.
    Ich weiß nicht, ob MySQL die Indices automatisch neu aufbaut.
    Generell kann wohl gesagt werden, dass die Indices erst am Schluß (also wenn alle Produkte im Shop sind) angelegt werden sollten.
    Wie ich das sehe, kommt die "nackte" XT-SQL-Datenbank während der Installation komplett ohne irgendeinen Index auf eine Tabelle...

    Ich werde das in die Doku mit aufnehmen.

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #8 am: 28. Mai 2009, 21:25:46
    Zitat
    Generell kann wohl gesagt werden, dass die Indices erst am Schluß (also wenn alle Produkte im Shop sind) angelegt werden sollten.

    Hmm - und wie ist das wenn man danach neue Produkte anlegt? - funktioniert der Shop dann immer noch? Wäre ansonsten ja ein Schuss in den Ofen.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #9 am: 28. Mai 2009, 21:41:41
    Also die Indizes aktualisieren sich nicht von alleine, dafür muss zumindest ein "ANALYZE TABLE" durchgeführt werden. Geht auch mit phpmyadmin, wenn ihr in der entsprechenden Tabelle seid unter "Operationen" -> " Optimiere Tabelle". Oder ihr klickt oben auf "Struktur" -> unten dann auf "Alle auswählen" und dann im Dropedown names "markierte:" erst "analysieren" und danach "optimieren"

    Oder ihr nutzt wie ich ja immer wieder empfehle mysqldumper, der kann auch die Tabellen analysieren und optimieren, also Indizes neu schreiben. Geht meiner Meinung nach komfortabler als mit phpmyadmin. ;-)

    Grüße

    Tom

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #10 am: 28. Mai 2009, 22:01:54
    Ja danke, hatte mir den mysqldumper schon runter geladen - aber bisher nicht damit gearbeitet. Wenn das mit den indices wirklich was bringt werd ich mich damit mal näher befassen.

    Haina

    • Fördermitglied
    • Beiträge: 217
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #11 am: 29. Mai 2009, 00:18:44
    Hallo Dokuman, tomcraft speedy ...
    Hab von nem Bekannten ne SQL bekommen die eine Reihe von Indizies im XTC neu setzt.
    Er hat angebl. bei nem Shop mit 100.000 Artikeln ne Geschwindigkeitszuwachs von 30%

    Habs bei mir auf nem Testsysten reingezogen , 3000 Artikel.
    Gefühlt, nicht gemessen: bring geringfügig was, war auch vorher schon sehr schnell.
    Hoffe konnte etwas helfen, SQL im Anhang für Euch.

    Haina

    • Fördermitglied
    • Beiträge: 217
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #12 am: 29. Mai 2009, 00:21:17
    ooopps, denied extension, probs nochmal ...
    schoo wieder denied, na gut prob copy , paste ...

    ALTER TABLE  ADD INDEX (  );
    ALTER TABLE  ADD INDEX (  );

    Sorry, copy / paste klappt auch nicht.
    Würde Euch ja gerne helfen, aber sagt mir nen Weg wie ich Euch das rüberschieben soll.
    Gruß

    Anonym

    • Gast
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #13 am: 29. Mai 2009, 00:36:57
    Bringt definitiv was... Habe das bei kaercher-schmitz unter anderem auch hinterlegt. Das sind aber alles nur Einzellösungen die 5 - 10% max bewirken. Wichtig ist immer einen eigenen Server zu haben, wenn man die 10000 Produkte übersteigt.

    Ein Server kann speziell mit dem oben genannten Anweisung perfekt eingestellt werden.

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    BAUSTELLE: Zusätzliche Indizes für die Datenbank
    Antwort #14 am: 29. Mai 2009, 01:21:57
    @Tom,
    danke für den Tipp mit dem Index aktualisieren. Dachte die aktualisieren sich selbst, wieder was dazu gelernt ;)
    Allerdings bringt mich das auf ein Problem, wie macht man das dann in der Praxis. Immer wenn man neue Produkte eingefügt hat oder evtl. sogar nur geändert hat, müsste man den Index neu erstellen lassen ?

    @DokuMan


    Zitat
    Wie ich das sehe, kommt die "nackte" XT-SQL-Datenbank während der Installation komplett ohne irgendeinen Index auf eine Tabelle...

    Weiß nicht genau, wie du das mit "während der Installation" gemeint hast, aber in der Tabelle "products_description" gibts zumindest im Modified Shop einen Index namens "products_name", zum Standard-xtc kann ich nix sagen. Ich habe den Index aber nicht selbst erstellt ;)
    Ob es sonst noch welche gibt, weiß ich jedoch nicht, bin nicht alle Tabellen durchgegangen.

    @enricosh
    magst du es bitte nochmal mit einer Textdatei versuchen, damit wir die Befehle sehen könnten. Wenn du auch noch Skripte oder so mitschicken möchtest wäre ZIP prima.
    Wir müssen uns erstmal so helfen, bis das Posten Problem gefixt ist.

    Vielen Dank

    15 Antworten
    13969 Aufrufe
    05. Januar 2014, 20:48:46 von Holgi
    39 Antworten
    19326 Aufrufe
    05. Oktober 2017, 15:52:32 von webald