Support vertec.com

Firebird Performance, Pages und Buffer Size

Firebird Performance, Pages und Buffer Size

Standard

|

Expert

CLOUD ABO

|

ON-PREMISES

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcen & Projektplanung

Business Intelligence

Erzeugt: 05.03.2021
Aktualisiert: 14.03.2022 | Abschnitt Buffer Size erhöhen aktualisiert.

Firebird ist der mit Vertec standardmässig mitgelieferte Datenbankserver und wird auch im Vertec Cloud Abo eingesetzt.

Die Firebird Performance hängt von folgenden Parametern der eingesetzten Hardware ab:

  • Disk Performance (Lesen und Schreiben)
  • CPU
  • Memory

Insbesondere angemietete Cloud Server haben in der Regel eine schlechte bis sehr schlechte Disk Performance, was sich direkt auf die Vertec Performance auswirkt. Der Grund ist, dass die Disk an sich schnell ist, aber nicht direkt mit der eingesetzten Hardware, sondern z.B. über IP angebunden ist (wie bei einem netzgebundenen Speicher (NAS)).

Ein weiteres Problem insbesondere bei Cloud Servern (aber auch bei On-Premises virtualisierten Servern) ist das Teilen von CPU Cores. Dies sollte vermieden werden. Ein Datenbankserver sollte jede Anfrage bearbeiten können, da jede Verzögerung wiederum direkt wahrgenommen werden kann. Somit sollten mindestens 4 Cores für einen Firebird Server verwendet werden, ohne dass diese noch mit anderen VM’s geteilt werden.

Die Disk Performance ist ein komplexes Thema, da es schwierig ist, diese bei Cloud Servern zu verbessern. Da viele Operationen in Vertec reine Leseprozesse sind, wie bspw. das Aufstarten, kann lässt sich die Disk Performance jedoch verbessern, indem dem Firebird Server erlaubt wird, mehr Informationen im Memory zu halten. Die Information wird dadurch nicht bei jedem Lesezugriff erneut von der Disk, sondern direkt aus dem Memory gelesen.

Firebird speichert seine Daten in den Vertec Datenbanken (z.B. Vertec.fdb) persistent ab. Diese Daten werden in sogenannten Pages gespeichert. Sie haben bei Vertec eine Grösse von 16KB und werden als Ganzes von Firebird ins Memory übernommen. Wenn kein Platz für neue Pages vorhanden ist, entfernt Firebird die am wenigsten genutzten Pages. Die maximale Anzahl an Pages, die im Memory gespeichert werden dürfen, wird durch die Buffer Size festgelegt.

Die Performance der Firebird Datenbank lässt sich verbessern, wenn dem Datenbankserver mehr Memory für seine Datenbank zur Verfügung gestellt wird. Die totale Anzahl der Pages in einer Datenbank kann einfach berechnet werden: die Grösse der Vertec.fdbDatei dividiert durch 16'384 (der Page Size). Bei kleineren Datenbanken sollte man nicht weniger als z.B. 10‘000 Pages im Buffer erlauben (Vertec Default), bei grösseren Datenbanken lohnt es sich, genauer hinzuschauen. Dass alle möglichen Datenbank Pages im Memory gehalten werden, ist wohl bei den meisten Vertec Installationen nicht nötig, es sei denn die Disk Performance ist schlecht und genügend Memory auf dem Server vorhanden.

Hinweis: Firebird reserviert beim Betriebssystem den ganzen Speicher, der sich aus der Buffer Size ergibt. Im Standard, bei einer Buffer Size von 10'000, sind das somit rund 160MB. Dies wird z.B. im Task Manager als Commited Sizeangegeben – das OS hat Firebird diesen Speicher fix zugesichert. Allerdings richtet sich der effektive Speicherbedarf danach, was Firebird wirklich nutzt, was z.B. durch die Kennzahl Memory (private working set)ersichtlich ist. Stellt die Überwachung bezüglich Memoryauslastung der Server allerdings auf der Commited Sizeab, so wird der Speicher allerdings als tatsächlich «in Benutzung» angeschaut.

Buffer Size erhöhen

Um die Buffer Size zu erhöhen kann via gfix folgender Befehl ausgeführt werden:

-b 200000 -user SYSDBA -password <password> vertec.fdb

Diese Einstellung wird jedoch beim DB Konvert auf die nächste Major Version wieder durch den Default von 10'000 ersetzt.

Ab Vertec 6.5 kann in der Database Section des Vertec.ini - File die Standard Buffer Size Grösse überschrieben werden:

Hier im Beispiel wird eine Buffer Size Grösse von 200'000 gesetzt, was einem maximalen Memorybedarf des Firebird Servers von ca. 3.2GB entspricht.

Wichtig ist hierbei zu wissen, dass es sich nicht um einen Maximalwert handelt, sondern dass Firebird Server im Memory immer die gesamte Anzahl reserviert. Der Server muss dementsprechend über ausreichend Arbeitsspeicher verfügen, um eine hier angegebene Buffer Size auch bewältigen zu können.

Dieser Parameter kann vor dem Update auf 6.5 ins Vertec.ini File geschrieben werden. Die Datenbank wird dann beim Konvert auf den gesetzten Wert angehoben bzw. ein allenfalls bereits manuell via gfix gesetzter Wert wird nicht automatisch auf den Standardwert zurückgesetzt.

Bitte wählen Sie Ihren Standort