
326 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
alle Ergebnisse cachet, um Ihnen noch h¨ohere Performance zu bringen. Indem Sie alte
Ergebnisse nach einer Weile ’auslaufen’ lassen, k¨onnen Sie den Cache in vern¨unftiger Weise
’frisch’ halten. Das ist in F¨allen extrem hoher Last recht nett, wobei Sie den Cache dy-
namisch vergr¨oßern und die Verfallszeit (Expire Timeout) h¨oher setzen k¨onnen, bis wieder
Normalauslastung eintritt.
In diesem Fall sollte die Tabellenerzeugungsinformation Informationen ¨ub er die
urspr¨ungliche Cache-Gr¨oße enthalten und dar¨uber, wie oft die Tabelle normalerweise
aktualisiert (refresh) werden sollte.
6.1.3 Wof¨ur benutzen wir MySQL?
In der anf¨anglichen Phase der Entwicklung von MySQL wurden die Features von MySQL
f¨ur unseren gr¨oßten Kunden gemacht. Dieser macht Data-Warehousing f¨ur eine Reihe der
gr¨oßten Einzelh¨andler in Schweden.
Aus allen Verkaufsstellen erhalten wir w¨ochentliche Zusammenfassungen aller Bonuskarten-
Transaktionen, und es wird erwartet, dass daraus n¨utzliche Informationen f¨ur die
Eigent¨umer der Verkaufsstellen zur Verf¨ugung gestellt werden, damit diese herausfinden
k¨onnen, wie ihre Werbemaßnahmen ihre Kunden beeinflussen.
Die Datenmenge ist recht riesig (etwa 7 Millionen Zusammenfassungs-Transaktionen pro
Monat), und wir haben Daten von 4 bis 10 Jahren, die wir dem Benutzer pr¨asentieren
m¨ussen. Wir bekamen w¨ochentliche Anfragen von Kunden, die ’sofortigen’ Zugriff auf neue
Berichte aus diesen Daten wollten.
Die L¨osung bestand darin, alle Informationen monatsweise in komprimierten ’Transaktions-
’ Tabellen zu speichern. Wir haben einen Satz einfacher Makros (ein Skript), die aus diesen
Tabellen Zusammenfassungstabellen erzeugen, die nach verschiedenen Kriterien gruppiert
sind (Produktgruppe, Kunden-ID, Verkaufsstelle usw.). Die Berichte sind Web-Seiten, die
dynamisch durch ein kleines Perl-Skript erzeugt werden, das eine Web-Seite parst, die en-
thaltenen SQL-Statements ausf¨uhrt und die Ergebnisse einf ¨ugt. Wir h¨atten statt dessen
PHP oder mod perl benutzt, aber diese waren damals noch nicht verf¨ugbar.
F¨ur grafische Darstellungen schrieben wir ein einfaches Werkzeug in C, das GIFs auf der
Grundlage der Ergebnisse einer SQL-Anfrage erzeugen kann (nach einigem Verarbeiten des
Ergebnisses). Dieses wird ebenfalls dynamisch durch ein Perl-Skript ausgef¨uhrt, das die
HTML-Dateien parst.
In den meisten F¨allen kann ein neuer Bericht einfach durch das Kopieren eines bestehenden
Skripts und das Ver¨andern der SQL-Anfrage darin erzeugt werden. In einigen F¨allen m¨ussen
wir einer bestehenden Zusammenfassungstabelle weitere Felder hinzuf¨ugen oder eine neue
generieren, aber auch das ist recht einfach, weil wir alle Transaktionstabellen auf Platte
haben. (Momentan haben wir mindestens 50 GB an Transaktionstabellen und 200 GB
weiterer Kundendaten.)
Wir lassen unsere Kunden auch direkt mit ODBC auf die Transaktionstabellen zugreifen,
so dass fortgeschrittene Benutzer selbst mit den Daten experimentieren k¨onnen.
Wir hatten mit der Handhabung keinerlei Probleme, auf einer recht bescheidenen Sun Ul-
tra SPARCstation (2x200 MHz). K¨urzlich haben wir einen unserer Server auf eine mit
2 Prozessoren best¨uckte 400 MHz-UltraSPARC erweitert und planen jetzt, Transaktionen
auf Produktebene zu handhaben, was eine zehnfache Steigerung der Datenmenge bedeuten
Comentarios a estos manuales