PostgreSQL und memcached

Ähnliche Dokumente
1 Belastung. 1.1 Standortbestimmung 1.2 Belastungsvorhersage 1.3 Favoriten

Referenzielle Integrität SQL

Schweizerische Kriminalprävention Prévention Suisse de la Criminalité

SMS-Tool. Seite 1 von 8

Synchronisations- Assistent

Buchungs- und Umsatzsteuerzeitraum ändern

SEND-IT Bedienungsanleitung

Internet online Update (Mozilla Firefox)

Wie erreiche ich was?

Mobile Anwendungen Google Cloud Messaging

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

desk.modul : ABX-Lokalisierung

Anforderungsanalyse: Tutor

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

User Manual Data 24. Login und Layout

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Vereinsverwaltung DFBnet Verein. Anleitung Familienbeiträge und Gemeinschaften

Sicherheit in Webanwendungen CrossSite, Session und SQL

Übungsblatt 8- Lösungsvorschlag

Dokumentation zur Anlage eines JDBC Senders

ZAHLUNGSAVIS. Im Zahlungsprogrammteil automatisch erstellen

Essensbestellung via Internet in der Küche des Klinikum Schloß Winnenden (EvI)

Performance Tuning

3. Stored Procedures und PL/SQL

Anleitung zur Einrichtung der VR-NetWorld Card basic in der VR-NetWorld Software

BsBanking. Nach dem Anmelden werden Ihnen alle Rechtsanwälte angezeigt. Sie können hier auch neue anlegen und vorhandene bearbeiten.

Registrierung für eine Senioren IPIN Ab 17. Mai 2011 können sich Spieler für eine Senioren IPIN (Lizenz) registrieren.

Kurzanleitung RACE APP

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Lehrer: Einschreibemethoden

Konfiguration des eigenen TUphone-Profils über TISS

Erstellen und Bearbeiten von Inhalten (Assets)

Datenbanken für Online Untersuchungen

Der Menüpunkt Einstellungen

Anbindung des eibport an das Internet

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Anleitung zum Herunterladen von DIN-Vorschriften außerhalb des internen Hochschulnetzes

Schuljahreswechsel im Schul-Webportal

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Warenwirtschaft Verkauf Einkauf Projektverwaltung Artikelverwaltung Kundenspezifische Artikel Verwaltung der Serien- u. Chargennummern Lagerverwaltung

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Benutzerhandbuch - Elterliche Kontrolle

Anleitung zur Erstellung einer Gefährdungsbeurteilung

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Anleitung SEPA-Lastschriften mit VR-NetWorld Software 5

Sourcecodeverwaltung

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

Der erstmalige Besuch (Neuregistrierung)

How to do? Projekte - Zeiterfassung

In konstanten Modellen wird davon ausgegangen, dass die zu prognostizierende Größe sich über die Zeit hinweg nicht verändert.

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Datenbank LAP - Chefexperten Detailhandel

BMW ConnectedDrive. connecteddrive. Freude am Fahren BMW CONNECTED DRIVE. NEUERUNGEN FÜR PERSONALISIERTE BMW CONNECTED DRIVE DIENSTE.

Man liest sich: POP3/IMAP

Session Management und Cookies

Auswahlabfragen mit ACCESS

Browsereinstellungen für moneycheck24 in Explorer unter Windows

Nutzung dieser Internetseite

Microsoft Office Einleitung

DB2 Kurzeinführung (Windows)

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Prozedurale Datenbank- Anwendungsprogrammierung

Excel Auswertungen in XAuftrag / XFibu

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Release Info 4.3. Customer Relationship Management / CRM. bpi Sales Performer 4.3

MIN oder MAX Bildung per B*Tree Index Hint

Übersicht über Datenbanken

MS Access 2010 Kompakt

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Sophia Business Leitfaden zur Administration

Kundenspezifische Preise im Shop WyRu Online-Shop

ecaros2 - Accountmanager

Datenbanken Microsoft Access 2010

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Workflows verwalten. Tipps & Tricks

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Feiertage in Marvin hinterlegen

Erwin Grüner

Kopplung von Datenbanken

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

Projektmanagement in Outlook integriert

Tag 4 Inhaltsverzeichnis

Neuheiten PROfirst. Version 7. Neuheiten PROfirst CAD Version 7 ab /6

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Tag 4 Inhaltsverzeichnis

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Fidbox App. Version 3.1. für ios und Android. Anforderungen für Android: Bluetooth 4 und Android Version 4.1 oder neuer

Transkript:

Building a Query Cache imos GmbH 11.11.2011 / PGconf.DE

Outline Einführung 1 Einführung 2 3

Szenario Einführung Webapplikation Pro Request viele, größtenteils einfache, Queries

Einteilung von Caches Tradeoff zwischen Maintenance Komplexität der Anfragen Dirty-Cache-Hit / Cache-Miss Transparenz Beeinflussung des Programmierflusses

Zielsetzung Einführung Häufig auftretende Queries speichern Selbstständige Maintenance Cache-Miss anstatt Dirty-Cache-Hit Minimaler Einfluss auf Applikation Jederzeit zu- und abschaltbar

Cache Einführung In-Memory-Key-Value-Store Memcached

Komplexität vs. Häufigkeit

Aufbau Einführung

Grundlegende Arbeitsweise Tabellen werden in logische Gruppen unterteilt Jede Gruppe bekommt einen eindeutigen Bezeichner: Handle Beziehung zwischen Tabellen und Handle wird gespeichert Query wird mindestens einem Handle zugeordnet

Schema Einführung memcache_handles memcache_tables memcache_handle memcache_handle table_name Row 0 users Row 0 users users Row 1 Row 1 users users_data

Aufbau der Schlüssel Ein Handle speichert die aktuelle Revision $handlerevision = "{$handle}_rev" Key zusammengesetzt aus: Query Parameter Revision des Handles

Beispiel Einführung Query: SELECT user_id, login, firstname, lastname FROM users WHERE user_id =? Handle: users Abfragen der Revision des Handles: $handlerevision = memcache_get("{$handle}_rev"); Zusammenbauen des Keys: $key = $handle. "_". md5($query. implode(",", $params)). "_rev_". $handlerevision;

Ergebnisse Einführung Memcache-Key: "users_e5c18e041e700d90717a634fb9751207_rev_1"

Bei Änderungen an Tabellen müssen die zugeordneten Handles inkrementiert werden Folgen: Alle zwischengespeicherten Queries werden automatisch ungültig Vorher: users_e5c18e041e700d90717a634fb9751207_rev_1 Nachher: users_e5c18e041e700d90717a634fb9751207_rev_2 On-Commit-Event-Problematik

On-Commit-Event-Problematik Cache nur invalidieren wenn Transaktion COMMITed wurde Cache und Datenbank synchronisieren Race-Conditions

Maintenance per Trigger Reagiert auf Veränderungen der Tabelle (INSERT, UPDATE und DELETE) Zugeordnete Handles auslesen und inkrementieren Vorteile: Einfach umzusetzen Nur Abhänigkeit auf pg_memcache Nachteile: Reset auch bei ROLLBACK Race-Conditions

Maintenance per Trigger FOR p_memcached_handle IN SELECT mt. memcached_handle FROM memcached_tables mt WHERE mt. table_name = TG_TABLE_NAME LOOP p_rev_name = p_memcached_handle. memcached_handle _rev ; p_rev = memcache_get ( p_rev_name ) ; I F p_rev IS NOT NULL THEN PERFORM memcache_incr ( p_rev_name ) ; END IF ; END LOOP;

Maintenance per Trigger Race-Condition 1: Transaktion A resettet Handles Transaktion B hinterlegt alte Daten unter neuer Revision Transaktion A COMMITed seine Daten Folge: Alte Daten liegen im Cache Race-Condition 2: Transaktion A resettet Handles Transaktion B hinterlegt alte Daten unter neuer Revision Transaktion A zerstört die Transaktion und ROLLBACKed Folge: Richtige Daten im Cache, aber unnötiger Cache-Miss

Maintenance per LISTEN / NOTIFY NOTIFY Seit PostgreSQL 9.0 mit Payload Wird erst beim COMMIT zugestellt Handler übernimmt das Inkrementieren der Handles Vorteile: Keine Abhängigkeit in der Datenbank Eine Nachricht kann mehreren Destinationen zugestellt werden Gleiche Nachrichten werden zusammengefasst Nachteile: Client muss entweder POLLen oder SELECTen Kein Two-Phase-Commit möglich Poor-Mans-Queue?

Maintenance per LISTEN / NOFITY NOTIFY (innerhalb eines Triggers): 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

Maintenance per LISTEN / NOFITY Wartezeiten bis NOTIFY die Destination erreicht Wenig Kontrolle über die Nachricht

Maintenance per Queue Eleganteste Lösung PgQ Nachricht vs. Event transportieren Consumer übernimmt das Inkrementieren der Handles

Maintenance per Queue Vorteile: Volle Kontrolle über Nachrichten Eine Nachricht kann mehreren Destinationen zugestellt werden PgQ übernimmt die Verteilung Nachteile: Externer Dienst (Ticker) Links: http://www.pgcon.org/2008/schedule/events/ 79.en.html http: //wiki.postgresql.org/wiki/pgq_tutorial

Allgemein Einführung Probleme Verdecken von langsamen Queries Memcached Monitoring http://code.google.com/p/memcached/wiki/ NewProgrammingFAQ Tuning http://code.google.com/p/memcached/wiki/ NewUserInternals Expire setzen

Einführung Leicht integrierbare Lösung um Antwortzeiten zu verbessern Wenig Einfluss auf Programmierfluss Race-Conditions Zukunft Race-Conditions minimieren Cache wärmen / vorbefüllen Leave Feedback https://www.postgresql.eu/events/feedback/pgconfde2011/