statistics icon indicating copy to clipboard operation
statistics copied to clipboard

Tabellen werden riesig

Open VIEWSION opened this issue 1 year ago • 5 comments

Hi,

ich hab das Problem dass die Tabellen ungewöhnlich groß werden. Das AddOn ist jetzt ca. 1 Jahr aktiv und allein die rex_pagestats_sessionstats hat schon fast 150MB. Kann das sein?

image

Danke!

VIEWSION avatar Oct 10 '24 13:10 VIEWSION

Ja, das ist (leider) so. Die sessionstats kann ich im Gegensatz zu den anderen Statistiken nicht direkt beim Besuch der Seite aggregieren sondern muss für jeden Aufruf einen Eintrag in der Tabelle anlegen.

AndiLeni avatar Oct 11 '24 09:10 AndiLeni

Ok - Wie könnte man das optimieren? Wenn ich das über mehrere Jahre laufen lassen möchte, wird das so nicht mehr funktionieren. Man bräuchte wohl so eine Art Archivierung.... Ich hab mir ehrlich gesagt noch nicht genau angesehen wie das technisch funktioniert, aber ich kann mich da gerne mit einbringen.

VIEWSION avatar Oct 11 '24 10:10 VIEWSION

Man müsste es machen wie Matomo und zwei Datenhaltungen implementieren. Einmal die Rohdaten wie jetzt, und einmal eine aggregierte Archivierung die beim Aufrufen des Addons oder per Cronjob getriggert wird. Aber dann kann man auch gleich Matomo nutzen und aus Redaxo die Besuche per API in Matomo bringen. Dieses Addon ist eher nur für kleine bis mittlere Webseiten ausgelegt.

Was du auch machen kannst, ist die Erfassung der Sessionstats deaktivieren. Dann hast du aber keine Infos mehr zu Besuchsdauer etc.

AndiLeni avatar Oct 11 '24 11:10 AndiLeni

Hmm... Ok - ich check das mal mit Matomo. Was mir halt gefällt ist die Tatsache dass man mit deinem AddOn im Frontend nicht erkennen kann ob da ein Tracker läuft. Bei Matomo wird ja standardmäßig ein JS geladen... aber ich glaube da gibt es auch eine Alternative über PHP... muss ich mal testen. Danke!

VIEWSION avatar Oct 15 '24 15:10 VIEWSION

@VIEWSION schau mal hier, es gibt einen PHP Tracker für Matomo. https://github.com/matomo-org/matomo-php-tracker/ und https://developer.matomo.org/api-reference/PHP-Matomo-Tracker. Da kannst du bestimmt relativ einfach im Projekt-Addon damit einen Request absetzen wenn ein Seitenaufruf stattfindet.

AndiLeni avatar Oct 15 '24 15:10 AndiLeni

Folgende Optimierungen sind auf Datenbankebene möglich:

  1. Hash-Felder benötigen nicht varchar(255), sondern varchar(40) oder char
  2. Gleiches gilt für rex_pagestats_sessionstats.token
  3. rex_pagestats_bot alle varchar-Felder können kürzer
  4. rex_pagestats_data.type könnte enum/set sein
  5. rex_pagestats_sessionstats.visitduration und .pagecount könnten int(5) unsigned oder kleiner sein
  6. rex_pagestats_referer.referer könnte vermutlich kürzer sein varchar(255), die Information wird praktisch nicht benötigt wenn im Wesentlichen die Domain interessant ist.
  7. rex_pagestats_urlstatus.status könnte varchar(24) sein oder nur int(3) unsigend für den HTTP-Statuscode

AWqxKAWERbXo avatar Nov 16 '24 16:11 AWqxKAWERbXo

Das gesagt sind 150 für eine Datenbank doch ein Klacks. Da brauchst du mehr als 10 Jahre, bis die Datenbank an den 2 GB kratzt.

AWqxKAWERbXo avatar Nov 16 '24 16:11 AWqxKAWERbXo

Weiter geht's in #115

AWqxKAWERbXo avatar Nov 19 '24 14:11 AWqxKAWERbXo