LimeSoda Blog ☰ Zeige Kategorien

Aufgedeckt: Magento Log-Tabellen

Eine Magento Community Edition 1.9.0.1 Standardinstallation zählt derzeit 337 Tabellen. Wer das Logging in Magento aktiviert hat und schon jemals einen genaueren Blick auf seine Datenbank (im laufenden Betrieb) geworfen hat wird festgestellt haben, dass einige dieser Tabellen sehr groß werden können.

Tabellengrößen von mehreren hundert Megabyte bzw. mehreren Gigabyte sind dabei möglich und bei großen Shops auch keine Seltenheit. Während einige dieser Tabellen viele Bestelldaten enthalten fragt man sich vielleicht, warum auch einige Log-Tabellen in dieser Liga mitspielen.

Folgende Tabellen sind üblicherweise in der Liste der größten Tabellen vorne mit dabei:

  • log_url
  • log_url_info
  • log_visitor
  • log_visitor_info

Was sich in diesen Tabellen verbirgt, erklärt dieser Blogpost.

Tabellen Aufräumen – the quick way

Sucht man nach Möglichkeiten diese Tabellen zu leeren, stolpert man ganz schnell über unzählige Webseiten, die eine Liste verschiedener TRUNCATE table; SQL-Statements wiedergeben. Auch die Stichwörter „Performance Boosting“ sind dabei immer wieder mit im Spiel. Die Lösung scheint einfach: Statements ausführen – Tabellen leer.

Magento Logging Tabellen leeren

Achtung: Das ist nur die halbe Wahrheit und möglicherweise gehen damit Funktionen verloren.

Damit man weiß, WAS man damit auch löscht, folgt nun eine genauere Erklärung der einzelnen Tabellen.

Die Tabellen im Detail

log_customer

Die Tabelle enthält Besucher-ID, Kunden-ID, Login- und Logout Timestamp (Zeit+Datum) sowie die Store-ID. Die Anzeige des Login-Timestamps findet man als “Last Logged In” in der Kunden-Detailansicht im Backend.

log_quote

Diese Tabelle loggt die Zuordnung der Quote-ID’s zu Besucher-ID mit Erstellungs- und Löschungsdatum.

log_summary

Diese Tabelle sollte (dem Code nach) eine Zusammenfassung von Besucher- und Kunden-Anzahl inkl. Datum beinhalten. In der Praxis habe ich in dieser Tabelle bei keinem Projekt bisher Einträge entdeckt.

log_summary_type

Hier ist der Typ (Stunde/Tag) für die nicht verwendete log_summary Tabelle gespeichert.

log_url

Diese Tabelle enthält die Besucher-ID inkl. Datum und Zeit.

log_url_info

Hier sind die aufgerufenen URLs und Referrer enthalten.

log_visitor

Diese Tabelle enthält: Besucher-ID, Session-ID, erster und letzter Besuch (Datum+Zeit), letzte URL- und Store-ID

Diese Tabelle wird für die zuletzt angesehenen Produkte („Recently Viewed Products“) benötigt.
In der Magento Enterprise Edition wird diese Tabelle für die Kundensegmentierung (Customer Segment) benötigt. Sofern die Segmentierung auch auf Besucherebene erfolgen soll, sollte man diese Daten also erhalten.

log_visitor_info

Diese Tabelle enthält Besucherinformationen. Die Daten werden nur bedingt weiterverwendet: Der User-Agent wird zwar gespeichert, aber nie ausgelesen (siehe meine Frage auf MagentoSE).

log_visitor_online

In dieser Tabelle sind Besucher und Kunden, die aktuell online sind, enthalten. Die Liste ist via Backend einsehbar unter: Kunden > Online-Kunden

Sofern jemand noch weitere Verwendungen für die Log-Tabellen kennt, freue ich mich über weitere Infos in den Kommentaren.

Tabellen Aufräumen – the right way

Sofern Magento Cronjobs aktiviert sind (und das sollten sie!), werden die Einträge in diesen Tabellen, die älter als 6 Monate sind (genau genommen: standardmäßig 180 Tage), vom log_clean Cronjob bereinigt.

Zu finden ist diese Option im Magento Backend unter System > Konfiguration > Fortgeschritten > System > Aufräumen des Verlaufs (oder auch „Log Bereinigung“). Je nach installiertem Sprachpaket sind die Bezeichnungen geringfügig anders, deshalb gibt es an dieser Stelle einen Screenshot des Backends in englischer Sprache:

Magento Log Cleaning

Log Cleaning Einstellungen im Magento Backend

 Resümee

Die oft (zu Unrecht) als unnötig in Verruf geratenen Magento Logging-Tabellen bieten doch ein paar nützliche Funktionen.  Benötigt man die oben genannten Funktionen nicht, steht einem TRUNCATE nichts im Weg. Mit dem regelmäßigen Aufräumen durch den Cronjob wachsen diese Tabellen auch nicht zu sehr an und entsprechend alte Einträge werden entfernt.

Kommentare

  • Hallo,

    sehr guter Artikel – man sieht immer noch viele Magento-Shops, bei denen diese Konfiguration unberücksichtigt bleibt und die Log-Tables sehr groß werden.

    Ein interessanter Ansatz, um die Log-Tables komplett zu deaktivieren (falls man die Funktionalität nicht benötigt), ist die Verwendung der MySQL Storage Engine BLACKHOLE:
    http://rackspeed.de/blog/magento-datenbank-optimierung-teil-2/

    Viele Grüße,
    Christoph

    Antworten
    • Hallo,
      Dankeschön :-)

      Die BLACKHOLE Lösung habe ich schon mal gesehen, aber nicht ausprobiert. Ich kann mir grundsätzlich vorstellen, dass das ein guter Weg ist, Daten aus einigen Tabellen fernzuhalten und das Logging zu erhalten. Allerdings werden die Queries zum Schreiben/Lesen ja immer noch erzeugt. Hast du das schon ausprobiert? Ein Vergleich bzw. eine Performancemessung wäre hier interessant :-)

      Beste Grüße,
      Anna

      Antworten

Hinterlasse einen Fingerabdruck für die Ewigkeit: Ein Kommentar bei LimeSoda!

(*) Pflichtfeld

Bewirb dich bei uns!

LimeSoda.
Digitalagentur in Wien.

Bewirb dich jetzt!
Anna Völkl

Verpasse nicht den nächsten Blog-Post von Anna!

Jetzt zum LimeSoda-Newsletter anmelden