180 likes | 296 Views
eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B). SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt. >> Gliederung <<. Queries – Was ist im folgenden mit „Queries“ gemeint ? Caching – Warum werden Queries gecached ? Techniken
E N D
eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result CachingOder wie man häufig gestellte Datenbankabfragen performanter bekommt
>> Gliederung << • Queries – Was ist im folgenden mit „Queries“ gemeint ? • Caching – Warum werden Queries gecached ? • Techniken • Caching auf dem „local filesystem“ • Vergleich – „mit / ohne“ dem hier vorgestellten Caching-Verfahren • Beispiel – aus der Praxis • Fazit – Schluss
1. Queries SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt Was ist im folgenden mit „Queries“ gemeint ? Sebastian Galenski - WWI 00 B
>> 1. Queries << • Ergebnismenge einer Datenbankabfrage • Also die Ergebnistabelle, einer SQL-Abfrage • aufgebaut wie eine normale Tabelle • Entitätsmenge – also eine Ansammlung von Entitäten und deren Attribute
2. Caching SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt Warum werden Queries gecached ? Sebastian Galenski - WWI 00 B
>> 2. Caching << • Bei hoch dynamischen Web-Seiten -> bis zu 15 SQL-Abfragen • 3 Gründe um sich ein Caching der Queries zu überlegen: • Der Datenbank Server ist entfernt • Hoher Traffic • Abfragen sind wiederkehrend, sie ändern sich • zu bestimmten Zeiten • bei einer Interaktion mit dem Redakteur / Admin • Diese kosten hauptsächlich Zeit • Performance-Gewinn bei der Generierung wird angestrebt
3. Techniken SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt Sebastian Galenski - WWI 00 B
>> 3. Techniken << • Es gibt zwei generelle Techniken: • man kann sich auf den Datenbank-Server verlassen und auf dessen Caching hoffen • man programmiert selbst ein Caching mit Hilfe des lokalen Filesystems
4. Caching auf dem „local filesystem“ SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt Sebastian Galenski - WWI 00 B
>> 4. Caching auf dem „local filesystem“ << • Die Theorie I: • Vermittler zwischen Datenbank-Server und Webanwendung • SQL-Abfrage und das Wissen über dessen Lifetime an das Cachemodul übergeben • Identifier für den entsprechenden CacheFile • Datenbankname und MD5-Prüfsumme über das SQL-Statement • Datenbank : bzo_anzeigen • Tabelle : testanzeigen • SQL-Statement : SELECT * FROM testanzeigen • Resultierender Cachefile : bzo_anzeigen_54a73ab20628171c7d650745aea5992a.cache
>> 4. Caching auf dem „local filesystem“ << • Die Theorie II: • überprüft das Cachefile auf das Datum der letzten Änderung • Falls die Lifetime abgelaufen ist: • SQL-Abfrage an die Datenbank • zurückkommende Ergebnisstabelle serialisieren • Falls die Lifetime noch gültig ist: • den Inhalt des Cachefiles deserializieren (wandelt den Fliesstext wieder in brauchbare Variablen um)
>> 4. Caching auf dem „local filesystem“ << • Vorteile: • es spielt keine Rolle mehr, ob der DB-Server auf der gleichen Maschine oder auf einer entfernte Maschine läuft • viele Billigprovider bieten zu ihren Hostingangeboten keine Datenbank an. Kein Problem mehr, einfach die Webanwendung und den Cache dort ablegen und der Cache spielt für die Anwendung im Prinzip den Datenbank-Server
5. Vergleich SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt „mit / ohne“ dem hier vorgestellten Caching-Verfahren Sebastian Galenski - WWI 00 B
6. Beispiel SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt aus der Praxis http://www.badische-zeitung.de Sebastian Galenski - WWI 00 B
>> 6. Beispiel << • BZ-Online • WebServer auf 3 NetBSD Maschinen im Cluster • PHP • MySQL entfernt aber im Cluster ohne das Caching: 4.5042 sec mit dem Caching: 0.3081 sec
7. Fazit – Schluss SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt Sebastian Galenski - WWI 00 B
>> 7. Fazit – Schluss << Vielen Dank für Ihre Aufmerksamkeit Infos, Download der Cache-Klasse für PHP/MySQL und diese Präsentation finden Sie unter http://qrc.galenski.de