postgresql und memcached · 2010. 12. 9. · einführung cache-hits cache-maintenance summary...
TRANSCRIPT
![Page 1: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/1.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
PostgreSQL und memcachedBuilding a generic Query Cache
Björn Häuser
imos GmbH
07.12.2010 / PGDays Stuttgart 2010
Björn Häuser PostgreSQL und memcached
![Page 2: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/2.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Outline
1 Einführung
2 Cache-Hits
3 Cache-Maintenance
Björn Häuser PostgreSQL und memcached
![Page 3: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/3.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Einteilung von Caches
Tradeoff zwischenMaintenanceKomplexität der AnfragenDirty-Cache-Hit / Cache-Miss
TransparenzBeeinflussung des Programmieraufwandes
Björn Häuser PostgreSQL und memcached
![Page 4: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/4.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Zielsetzung
Häufig auftretende Queries speichernSelbstständige MaintenanceCache-MissMinimaler Einfluss auf ApplikationJederzeit zu- und abschaltbar
Björn Häuser PostgreSQL und memcached
![Page 5: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/5.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Komplexität vs. Häufigkeit
Björn Häuser PostgreSQL und memcached
![Page 6: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/6.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Grundlegende Arbeitsweise
Tabellen werden nach Zugehörigkeit gruppiertJede Gruppe bekommt einen eindeutigen Bezeichner:Handle
Beziehung zwischen Tabellen und Handle wird gespeichert
Query wird mindestens einem Handle zugeordnet
Björn Häuser PostgreSQL und memcached
![Page 7: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/7.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Schema
memcache_tables
Row
0R
ow
1
memcache_handle table_name
users
users
users_data
memcache_handles
Row
0R
ow
1
memcache_handle
users users
Björn Häuser PostgreSQL und memcached
![Page 8: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/8.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Aufbau der Schlüssel
Ein Handle speichert die aktuelle Revision$rev = "{$handle}_rev"
Cache-Key bestehend aus:QueryParameterRevision des Handles
Björn Häuser PostgreSQL und memcached
![Page 9: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/9.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Beispiel
Query:
SELECT user_id, login, firstname, lastnameFROM usersWHERE user_id = ?
Handle:users
Abfragen der Revision des Handles:$rev = memcache_get("{$handle}_rev");
Zusammenbauen des Keys:
$key = $handle . md5($query, implode(",", $params)) ."_rev_" . $rev;
Björn Häuser PostgreSQL und memcached
![Page 10: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/10.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Cache-Maintenance
Bei Änderungen an Tabellen müssen die zugeordnetenHandles inkrementiert werdenFolgen:
Alle zwischengespeicherten Queries werden automatischungültig
On-Commit-Event-Problematik
Björn Häuser PostgreSQL und memcached
![Page 11: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/11.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
On-Commit-Problematik
Cache nur invalidieren wenn Transaktion COMMITedwurdeCache und Datenbank synchronisieren
Race-Conditions
Björn Häuser PostgreSQL und memcached
![Page 12: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/12.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per Trigger
Reagiert auf Veränderungen der Tabelle (INSERT,UPDATE und DELETE)Zugeordnete Handles auslesen und inkrementierenVorteile:
Einfach umzusetzenNur Abhänigkeit auf pg_memcache
Nachteile:Reset auch bei ROLLBACKRace-Conditions
Björn Häuser PostgreSQL und memcached
![Page 13: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/13.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per Trigger
FOR p_memcached_handle INSELECT mt . memcached_handleFROM memcached_tables mtWHERE mot . table_name = TG_RELNAME
LOOPp_rev_name = p_memcached_handle .
memcached_handle | | ’ _rev ’ ;p_rev = memcache_get ( p_rev_name ) ;IF p_rev IS NOT NULL THEN
PERFORM memcache_incr ( p_rev_name ) ;END IF ;
END LOOP;
Björn Häuser PostgreSQL und memcached
![Page 14: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/14.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per Trigger
Race-Condition 1:Transaktion A resettet HandlesTransaktion B hinterlegt alte Daten unter neuer RevisionTransaktion A COMMITed seine DatenFolge: Alte Daten liegen im Cache
Race-Condition 2:Transaktion A resettet HandlesTransaktion B hinterlegt alte Daten unter neuer RevisionTransaktion A zerstört die Transaktion und ROLLBACKedFolge: Richtige Daten im Cache, aber unnötigerCache-Miss
Björn Häuser PostgreSQL und memcached
![Page 15: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/15.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per LISTEN / NOTIFY
NOTIFYSeit PostgreSQL 9.0 mit PayloadWird erst beim COMMIT zugestellt
Handler übernimmt das Inkrementieren der HandlesNachricht vs. Event transportierenVorteile:
Keine Abhänigkeit in der DatenbankEine Nachricht kann mehreren Destinationen zugestelltwerdenGleiche Nachrichten werden zusammengefasst
Nachteile:Client muss entweder POLLen oder SELECTenKein Two-Phase-Commit möglich
Poor-Mans-Queue?
Björn Häuser PostgreSQL und memcached
![Page 16: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/16.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per LISTEN / NOFITY
NOTIFY:
EXECUTE pg_notify(TG_TABLE_SCHEMA,(SELECT string_agg(memcached_handle, ’,’)FROM memcached_tables
WHERE table_name = TG_TABLE_NAME));
LISTEN:http://rhodiumtoad.org.uk/junk/listen-min.pl.txt
Björn Häuser PostgreSQL und memcached
![Page 17: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/17.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per LISTEN / NOFITY
Wartezeiten bis NOTIFY die Destination erreichtWenig Kontrolle über die Nachricht
Björn Häuser PostgreSQL und memcached
![Page 18: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/18.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per Queue
Eleganteste LösungPgQ
Nachricht vs. Event transportierenConsumer übernimmt das Inkrementieren der Handles
Björn Häuser PostgreSQL und memcached
![Page 19: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/19.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Maintenance per Queue
Vorteile:Volle Kontrolle über NachrichtenEine Nachricht kann mehreren Destinationen zugestelltwerdenPgQ übernimmt die Verteilung
Nachteile:Externer Dienst (Ticker)
Links:http://www.pgcon.org/2008/schedule/events/79.en.htmlhttp://wiki.postgresql.org/wiki/PGQ_Tutorial
Björn Häuser PostgreSQL und memcached
![Page 20: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/20.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Allgemein
ProblemeVerdecken von langsamen Queries
MemcachedMonitoring
http://code.google.com/p/memcached/wiki/NewProgrammingFAQ
Tuninghttp://code.google.com/p/memcached/wiki/NewUserInternals
Expire setzen
Björn Häuser PostgreSQL und memcached
![Page 21: PostgreSQL und memcached · 2010. 12. 9. · Einführung Cache-Hits Cache-Maintenance Summary PostgreSQL und memcached Building a generic Query Cache Björn Häuser imos GmbH 07.12.2010](https://reader034.vdocuments.mx/reader034/viewer/2022051808/600da471000cfe7d3b732eaa/html5/thumbnails/21.jpg)
EinführungCache-Hits
Cache-MaintenanceSummary
Summary
Leicht integrierbare Lösung um Antwortzeiten zu erhöhenWenig Einfluss auf ProgrammierflussRace-Conditions
ZukunftRace-Conditions minimierenUmstellung auf Queueing-Lösung
Leave Feedback!http://2010.pgday.eu/feedback
Björn Häuser PostgreSQL und memcached