Firebird Database Cache Buffer



Ähnliche Dokumente
Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Zwischenablage (Bilder, Texte,...)

Internet online Update (Internet Explorer)

Installation und Inbetriebnahme von SolidWorks

Anleitung über den Umgang mit Schildern

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Computeria Solothurn

Professionelle Seminare im Bereich MS-Office

Die Post hat eine Umfrage gemacht

EasyWk DAS Schwimmwettkampfprogramm

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Navigieren auf dem Desktop

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Kontaktlinsen über die neue Website bestellen eine Kurzanleitung

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch

Dokumentation IBIS Monitor

12. Dokumente Speichern und Drucken

Erstellen von x-y-diagrammen in OpenOffice.calc

10.1 Auflösung, Drucken und Scannen

TECHNISCHE INFORMATION LESSOR LOHN/GEHALT BEITRAGSNACHWEIS-AUSGLEICH BUCH.-BLATT MICROSOFT DYNAMICS NAV

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Das Persönliche Budget in verständlicher Sprache

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Artikel Schnittstelle über CSV

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Das Leitbild vom Verein WIR

Der neue persönliche Bereich/die CommSy-Leiste

Leichte-Sprache-Bilder

How to do? Projekte - Zeiterfassung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Alle gehören dazu. Vorwort

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

PHPNuke Quick & Dirty

Einfügen von Bildern innerhalb eines Beitrages

Handbuch zum Excel Formular Editor

E-Government Sondertransporte (SOTRA) Registrierung von Benutzerkennung

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

TRIC DB Release 6.0. Refresh mit der Wiederherstellung der Produkte Siemens, Landis&Gyr und DEOS. für. Lizenznehmer der TRIC DB Version 6.0.

Persönliches Adressbuch

Tipps und Tricks zu Netop Vision und Vision Pro

Prozessarchitektur einer Oracle-Instanz

ACDSee Pro 2. ACDSee Pro 2 Tutorials: Übertragung von Fotos (+ Datenbank) auf einen anderen Computer. Über Metadaten und die Datenbank

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

Zusammenführen mehrerer Dokumente zu einem PDF In drei Abschnitten erstellen Sie ein Dokument aus mehreren Einzeldokumenten:

Webalizer HOWTO. Stand:

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Die Dateiablage Der Weg zur Dateiablage

Synchronisations- Assistent

Inkrementelles Backup

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Task: Nmap Skripte ausführen

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Statuten in leichter Sprache

Enigmail Konfiguration

Datensicherung EBV für Mehrplatz Installationen

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

KVIrc installieren (win) i. KVIrc installieren (win)

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

PC-Kaufmann 2014 ZIP-Komprimierte Datensicherung einspielen

Mehrere PDF-Dokumente zu einem zusammenfügen

2. Speichern und öffnen

Datensicherung und Wiederherstellung

Zeichen bei Zahlen entschlüsseln

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

IntelliRestore Seedload und Notfallwiederherstellung

Dieses erste Kreisdiagramm, bezieht sich auf das gesamte Testergebnis der kompletten 182 getesteten Personen. Ergebnis

Was meinen die Leute eigentlich mit: Grexit?

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Inventur / Jahresabschluss

teamsync Kurzanleitung

WEBMARK How it works. Kapitel 6: Nutzen der Informationen außerhalb des Systems. Wertvolle Erkenntnisse sind nur ein paar Mausklicks entfernt!

4D Server v12 64-bit Version BETA VERSION

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

6 Das Kopieren eines bereits bestehenden Inhaltselements

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Überprüfung der digital signierten E-Rechnung

Password Depot für ios

Eigenen Farbverlauf erstellen

Das Handbuch zu KSystemLog. Nicolas Ternisien

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Strategie & Kommunikation. Trainingsunterlagen TYPO3 Version 4.3: News Stand

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Internationales Altkatholisches Laienforum

Klicken Sie auf Extras / Serienbriefe mit Word. Im Fenster Serienbriefe können Sie nun auswählen, an wen Sie den Serienbrief schicken möchten.

Transkript:

Firebird Database Cache Buffer Norman Dunbar 20. Juli 2013 Version 1.3.1-de - deutsche Version Übersetzung ins Deutsche: Martin Köditz

Inhaltsverzeichnis Einleitung... 3 Der Firebird-Cache... 3 MON$IO_STATS verwenden... 4 Anhang A: Dokumenthistorie... 8 Anhang B: Lizenzhinweis... 9 2

Einleitung Firebird nutzt einen Seiten-Cache (engl. page cache), um die Seiten im Speicher vorzuhalten. Diese sind deutlich schneller aus dem RAM zu laden als jedesmal von der Festplatte zu lesen. Die folgende Beschreibung wie Firebird den eigenen Cache verwendet, stammt aus einem Posting von Ann Harrison aus der Firebird-Support-Mailing-List. Das Posting war eine Antwort auf die Frage ob es einen Weg gibt, den Speicher-Cache zu reduzieren, ohne zuviel Performance aufzugeben (engl. if there is a way to reduce the memory cache without giving up too much performance?) Dieses Posting bezog sich auf ein System, dass sehr lange benötigte, um aus dem Schlafmodus zu erwachen. Dies wurde als Grund vermutet, dass einige Zeit benötigt wurde, um alle Cache-Seiten vor dem Ausführen der ersten Abfrage von der Festplatte zu lesen. Dieser Grund wurde bestätigt und der verantwortliche DBA fragte über die Liste, wie er den Puffer soweit wie möglich reduzieren könne, zeitgleich aber noch ein vernünftig laufendes System erhielte. Ann gab ihr Einverständnis das Posting formal als Teil des Firebird-Dokumentations-Projektes aufzunehmen. Der Firebird-Cache Alles in der Datenbank ist in Seiten mit fester Größe vorgegebener Struktur abgelegt - es gibt neun verschiedene Seitentypen. Der Seiten-Cache ist ein Zwischenzustand zwischen dem "Arbeits"-Bereich und der Festplattenspeicher. Beim Start liest Firebird die Datenbank-Header-Seite (engl. database header page), dann die erste Zeiger-Seite (pointer page) der Systemtabelle RDB$PAGES. Hiermit erfährt Firebird, wo die Zeiger-Seiten, neben anderen Dingen, für die System- und Benutzertabellen zu finden sind. Sobald die Anwendung auf die Datenbank zugreift, beginnt eine Transaktion. Firebird liest die Zeiger-Seiten, die erzählen wo die Daten-Seiten für die innerhalb der Transaktion betroffenen Tabellen zu finden sind. Alle Seiten wandern in den Cache und bleiben dort bis der Cache voll ist. Wenn kein Platz für eine neue Seite vorhanden ist, wird Firebird die am wenigsten genutzte Seite entfernt - nicht die erste gelesene, sondern die wenigst genutzte, die nicht geändert wurde. Wenn ein Commit für eine Transaktion durchgeführt wird - und bei einigen anderen Dingen - schreibt Firebird die durch diese Transaktion geänderten Seiten auf die Festplatte, entfernt sie aber nicht aus dem Cache - dies verhindert, dass die Seiten nochmals eingelesen werden müssen, wenn sie baldmöglichst benötigt werden. Mit der Zeit und etwas Glück, werden zum Schluss die am häufigsten geänderten und genutzten Seiten im Cache verbleiben - das wären Transaktions-Inventar-Seiten, Zeiger-Seiten für aktive Tabellen, die Header-Seite, die Top-Level-Indexes, etc.. Daten und Lower-Level-Index-Seiten werden rein- und rausgeladen, je nach Gebrauch - aber der Cache wird immer gefüllt sein. Sie können die MON$-Tabellen (seit Firebird 2.1, insbesondere MON$IO_STATS) nutzen, um herauszufinden, wie gut Ihr Cache ausgelastet ist. Sie zeigen die Anzahl der Fetches gegenüber den Reads, wie oft auf Seiten zugegriffen wurde und wie oft diese von der Festplatte gelesen wurden. Wenn die Anzahl der Reads dramatisch in die Höhe geht, haben Sie den Cache zu sehr reduziert. 3

Die MON$-Tabellen zeigen Ihnen außerdem die Anzahl der Marks gegen die Anzahl der Writes, welche angeben, wie oft Seiten geändert wurden gegenüber der Anzahl von Seiten, die auf die Festplatte geschrieben wurden. Wenn Sie sehen, dass die Writes in die Höhe schnellen, haben Sie vermutlich den Cache zu sehr reduziert. MON$IO_STATS verwenden Wie oben bereits angegeben, kann die Tabelle MON$IO_STATS genutzt werden, um zu bestimmen, wie gut Ihr Buffer-Cache arbeitet. Die Tabelle hat folgende Struktur: MONS$STAT_ID: Die Statistik-ID. MONS$STAT_GROUP: Die statistische Gruppe. Statistiken werden in folgende Gruppen unterteilt: 0: Die Datenbank als Ganzes. 1: Attachments. 2: Transaktionen. 3: Statements. 4: Aufrufe (Calls). MON$PAGE_READS: Die Anzahl der gelesenen Seiten. Dies sind die Seiten, die von der Festplatte und nicht aus dem Arbeitsspeicher gelesen wurden. MON$PAGE_WRITES: Die Anzahl der auf die Festplatte zurückgeschriebenen Seiten. MON$PAGE_FETCHES: Die Anzahl der Seiten, die aus dem Cache geleseln wurden, Gegensatz zu denen von der Festplatte. MON$PAGE_MARKS: Die Anzahl der im Cache geänderten Seiten. Es ist möglich, dass nicht alle zurück auf die Festplatte geschrieben wurden. Um die derzeitigen Statistiken für die gesamte Datenbank zu untersuchen, verwenden wir folgende Abfrage in isql: tux> isql employee Database: employee SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS CON> FROM MON$IO_STATS CON> WHERE MON$STAT_GROUP = 0; MON$PAGE_READS MON$PAGE_WRITES MON$PAGE_FETCHES MON$PAGE_MARKS =================== =================== =================== =================== 134 526 13851 529 Das erzeugte Resultat zeigt, dass: 4

134 Seiten von der Festplatte in den Cache gelesen werden mussten. 13.851 Seiten, auf der anderen Seite, wurden direkt aus dem Cache gelesen. 529 Seiten im Cache, wurden auf irgendeinem Wege geändert. 526 geänderte Seiten wurden vom Cache auf die Festplatte kopiert. Hieraus können wir erkennen, dass obwohl eine kleine Anzahl Seiten in den Cache gelesen wurde, wir nichts tun können, um dies zu vermeiden. Sobald die Datenbank gestartet wird, ist der Cache leer, wenn aber eine Anwendung eine Verbindung herstellt, werden verschiedene Seiten gelesen und in der Cache gefüllt, wodurch physikalische Leseoperationen durchgeführt werden. In diesem Beispiel scheint es so zu sein, dass sobald Seiten im Cache vorhanden sind, diese auch relativ häufig verwendet werden. Für jeden physikalischen Read wurden ungeführ 103 Reads aus dem Cache durchgeführt. Von den 529 aktualisierten Seiten - und dies sind sowohl System- wie auch Benutzerseiten - wurden 526 zurück auf die Festplatte geschrieben, während 3 Seiten immer noch im Cache verbleiben, noch nicht geschrieben. Das obige Beispiel zeigt die Performance des Caches während der Datenbanklaufzeit. Wir können dies auf unsere aktuelles Attachment herunterbrechen, indem wir die Abfrage etwas verändern. Wir holen nur die Datensätze, wo MON$STAT_GROUP gleich 1 ist. SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS CON> FROM MON$IO_STATS CON> WHERE MON$STAT_GROUP = 1; MON$PAGE_READS MON$PAGE_WRITES MON$PAGE_FETCHES MON$PAGE_MARKS =================== =================== =================== =================== 0 4 87 5 134 520 13619 522 Die Interpretation der neuen Statistiken ist die gleiche wie für die gesamte Datenbank. Wir können außerdem eine Statistikdiagnose für Transaktionen durchfühen: SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS CON> FROM MON$IO_STATS CON> WHERE MON$STAT_GROUP = 2; MON$PAGE_READS MON$PAGE_WRITES MON$PAGE_FETCHES MON$PAGE_MARKS =================== =================== =================== =================== 0 0 60 0 0 0 69 0 5

0 0 93 0 0 0 85 0 Und auch für Statements: SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS CON> FROM MON$IO_STATS CON> WHERE MON$STAT_GROUP = 3; MON$PAGE_READS MON$PAGE_WRITES MON$PAGE_FETCHES MON$PAGE_MARKS =================== =================== =================== =================== 0 0 38 0 0 0 4 0 0 0 18 0 0 0 158 0 0 0 0 0 1 0 12 0 0 0 2 0 3 0 1436 0 0 0 101 0 7 0 613 0 Schlussendlich ist es möglich - und vermutlich äußerst nützlich - die Statistiken für Ihre eigene Sitzung zu bestimmen. Sie finden Ihre Attachment-ID mittels CURRENT_CONNECTION unter der Verwendung eines Joins mit MON$IO_STATS und der Spalte MON$STAT_ID. 6

SQL> SET LIST; SQL> SELECT T.MON$ATTACHMENT_ID, T.MON$TRANSACTION_ID, CON> IO.MON$PAGE_READS, IO.MON$PAGE_WRITES, CON> IO.MON$PAGE_FETCHES, IO.MON$PAGE_MARKS CON> FROM MON$TRANSACTIONS AS T CON> JOIN MON$IO_STATS as IO CON> ON (IO.MON$STAT_ID = T.MON$STAT_ID) CON> WHERE T.MON$ATTACHMENT_ID = CURRENT_CONNECTION; MON$ATTACHMENT_ID 12 MON$TRANSACTION_ID 218 MON$PAGE_READS 5 MON$PAGE_WRITES 0 MON$PAGE_FETCHES 66 MON$PAGE_MARKS 0 MON$ATTACHMENT_ID 12 MON$TRANSACTION_ID 217 MON$PAGE_READS 0 MON$PAGE_WRITES 0 MON$PAGE_FETCHES 1 MON$PAGE_MARKS 0 7

Anhang A: Dokumenthistorie Die exakte Dateihistorie ist im manual-module unseres CVS-Baumes aufgenommen; Siehe http://sourceforge. net/cvs/?group_id=9028 Die vollständige URL des CVS-Logs dieser Datei kann unter dem Link http://firebird. cvs.sourceforge.net/viewvc/firebird/manual/src/docs/firebirddocs/fbcache.xml?view=log gefunden werden. Versionsgeschichte 1.0 05. Januar 2010 ND Neues Dokument auf Basis eines Postings von Ann Harrison an den Firebird-support. 1.1 21. Juni 2010 ND Ergänzt, dass es möglich ist, die Statistiken für die aktuelle Verbindung zu erhalten. Im Gegensatz zur vorigen Behauptung. 1.1-de 02. September 2013 MK Deutsche Übersetzung. 8

Anhang B: Lizenzhinweis Der Inhalt dieser Dokumentation unterliegt der "Public Documentation License Version 1.0" (der Lizenz ); die Dokumentation darf nur unter Respektierung dieser Lizenz genutzt werden. Kopien der Lizenz sind verfügbar unter http://www.firebirdsql.org/pdfmanual/pdl.pdf (PDF) und http://www.firebirdsql.org/manual/pdl.html (HTML). Die Original-Dokumentation trägt den Titel Firebird Database Cache Buffer. Der ursprünglich Autor der Original-Dokumentation ist: Norman Dunbar unter Verwendung der durch Ann Harrison zur Verfügung gestellten Daten. Copyright (C) 2010. Alle Rechte vorbehalten. Kontakt zum Original-Autor: NormanDunbar at users dot sourceforge dot net. 9