18
eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Embed Size (px)

Citation preview

Page 1: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

eine Semesterarbeit von

Sebastian Galenski

(2. Semester – WWI 00 B)

SQL Query Result CachingOder wie man häufig gestellte Datenbankabfragen performanter bekommt

Page 2: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> Gliederung <<

1. Queries – Was ist im folgenden mit „Queries“ gemeint ?

2. Caching – Warum werden Queries gecached ?

3. Techniken

4. Caching auf dem „local filesystem“

5. Vergleich – „mit / ohne“ dem hier vorgestellten Caching-Verfahren

6. Beispiel – aus der Praxis

7. Fazit – Schluss

Page 3: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

1. Queries

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

Was ist im folgenden mit „Queries“ gemeint ?

Page 4: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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

Page 5: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

2. Caching

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

Warum werden Queries gecached ?

Page 6: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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

Page 7: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

3. Techniken

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

Page 8: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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

Page 9: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

4. Caching auf dem „local filesystem“

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

Page 10: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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_anzeigenTabelle : testanzeigenSQL-Statement : SELECT * FROM testanzeigenResultierender Cachefile : bzo_anzeigen_54a73ab20628171c7d650745aea5992a.cache

Page 11: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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)

Page 12: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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

Page 13: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

5. Vergleich

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

„mit / ohne“ dem hier vorgestellten Caching-Verfahren

Page 14: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 5. Vergleich <<

Page 15: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

6. Beispiel

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

aus der Praxis

http://www.badische-zeitung.de

Page 16: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 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

Page 17: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

7. Fazit – Schluss

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

Sebastian Galenski - WWI 00 B

Page 18: Eine Semesterarbeit von Sebastian Galenski (2. Semester – WWI 00 B) SQL Query Result Caching Oder wie man häufig gestellte Datenbankabfragen performanter

Sebastian Galenski - WWI 00 B

SQL Query Result Caching

Oder wie man häufig gestellte Datenbankabfragen performanter bekommt

>> 7. Fazit – Schluss <<

Vielen Dankfür Ihre Aufmerksamkeit

Infos, Download der Cache-Klasse für PHP/MySQLund diese Präsentation

finden Sie unter http://qrc.galenski.de