AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird optimal einstellen

Firebird optimal einstellen

Ein Thema von csaeum · begonnen am 6. Okt 2014 · letzter Beitrag vom 11. Okt 2014
Antwort Antwort
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#1

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 22:05
DefaultDbCachePages = 2048 in firebird.conf wird nur dann verwendet, wenn auf Datenbankebene Page Buffers = 0 ist. Wenn du aber den Wert auf Datenbankebene mit gfix setzt, dann kommt der Default in firebird.conf nicht zum Zuge. Aber da du beide Werte gleich setzt ist es egal.

Ja, du kannst den Page Buffers mit gfix während des Betriebs setzen, aber diese Änderung wird erst für neue Connections wirksam, d.h. bestehende Connections bleiben davon unbetroffen.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 10:59
Moin,

kleine Anmerkungen aus meiner Sicht:

SSDs bringen gerade bei Firebird immer Vorteile, die man auch durch optimierte Programmierung nicht aufholen kann. Wir gehen aber eh davon aus, das man nicht irgendwelche sinnlosen SQLs auf die Datenbank loslässt, wobei das natürlich in erster Linie in der Verantwortung des Softwareherstellers liegt. Man sollte aber zuverlässige Enterprise SSD Hersteller setzen, die auf eine Schreibleistung und Haltbarkeit garantieren, dann aber trotzdem regelmäßig die SSD gegen neue austauschen. So ähnlich wie ein Ölwechsel beim Motor.

Wir bekommen regelmäßig Rückmeldungen durch den Benchmark in der IBExpert Vollversion, die einen realen Firebird Datenbanktest abbildet mit 10 parallelen
Threads. Man bekommt am Ende 2 Messwerte, einen für Firebird mit extrem kleinem Cachebuffer=50 und einen für normale Einstellung =5000
Den mit 50 Buffers nennen wir Drive Index, weil dabei hundertausende Pages von der Platte gelesen oder wieder zurückgeschrieben werden, bei der größeren Einstellung
passiert kaum was auf der Platte, daher ist da in erster Linie Anbindung CPU/Mainboard/Ram wichtig, den Wert nennen wir CPU Index.

Aktuelle Standardwerte liegen bei den Kunden zwischen 5 % und 40 % der Leistung, die unser IFS Referenzserver vor 4 Jahren hatte und die wir daher auf 100% referenziert haben. Der aktuelle IFS Basic Referenzserver hat einen Driveindex von mindestens 250% und einen CPU Index von mindestens 150%, Kostenpunkt dafür bei uns ab ca. 1500 €, ausgelegt für bis zu 100 User und bis 50GB Datenbankgröße.

Oder mit anderen Worten: Der gleiche Test, der auf der Maschine mit 5% Leistung 1000 Sekunden braucht, läuft auf dem aktuellen Server in 20 Sekunden durch.

Wenn du das auch mal testen willst und schon eine aktuelle IBExpert Vollversion hast, findest du das unter services - Benchmark

Wir schalten dir ggf auch gerne mal eine Tageslizenz kostenlos frei, damit kannst du den Wert auch ohne aktuelle IBExpert Vollversion ermitteln (Anfrage dafür gerne an sales@ibexpert.com, Ihr braucht dafür aber einen kostenlosen Account in unserem Downloadcenter).

Sehr wichtig: im Benchmark als Connectionstring immer einen Remotestring angeben, also mit servername: davor, ggf auch localhost: , sonst verfälscht der Test das Ergebnis.
Ale angezeigten Ergebnisse, neben denen nicht Drive Index oder CPU Index steht, sind Zeiten in Sekunden.

Wichtige Erkenntnisse aus dem Benchmark:

Der Classic bzw Superclassic Server ist meistens langsamer. Ursache: Firebird Datenbankoperationen sind 99% reine Byteschubserei und die CPU Berechnungen sind relativ lächerlich, so das mehrere Kerne kaum vorteile bringen, sondern meistens Nachteile, denn der Benchmark verursacht auf dem Superserver ca. 14 GB Lese und Schreib Operationen und auf dem Classic bzw Superclassic ca. 37 GB Lese und Schreib Operationen. Da der Test 100% reproduzierbar ist ist das auch überall nachvollziehbar und man sieht im Taskmanager, wie schnell die Bytes gelesen und geschrieben werden.

Wenn du nun auf einer Festplatte 100MB Lese und Schreibleistung pro Sekunde hast, wirst du dir einfach ausrechnen können, warum die SSDs mit bis zu 600MB pro Sekunde schneller sind. Da auch noch die Datenträgerlatenz dazu kommt (schnelle Festplatten haben 5ms durchschnittliche Zugriffszeit=200 IOPS, brauchbare Enterprise SSDs haben 50000 IOPS oder noch mehr) und die aufgrund der Schreibweise des Firebird Systems extrem wichtig ist, wirst du auch hier eine wichtige Unterscheidung feststellen. Und lass dich nicht täuschen, RAID Controller (auch mit SSDs dahinter) sind für Firebird meistens deutliche Bremsklötze, externe Storagesystem machen das ganz noch schlimmer (viel mehr Details gibt es dazu auch bei uns in der Profiworkshops).

Wenn du den Benchmark ausführst und in der CPU nahezu keinerlei Last sehen wirst, ist der Grund sehr einfach: Die CPU wartet auf den lahmen Datenträger.

Sehr interessant dagegen: Der IBExpert Benchmark mit Firebird 3.0 ist ca. 25% schneller als der benchmark mit Firebird 2.5. Es ist bei FB3 also wirklich noch mal ein Leistungsschub zu erwarten, wenn man Multiusermessungen macht. Im Singleuserbetrieb wird das aber kaum feststellbar sein, ist aber eigentlich auch unter fb25 schon schnell genug, wenn man nicht unsinnige SQLs ausführt oder bescheuerte Datenbankstrukturen hat.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 11:44
Hallo Holger,

Kurze Anmerkung zu:
Zitat:
Den mit 50 Buffers nennen wir Drive Index, weil dabei hundertausende Pages von der Platte gelesen oder wieder zurückgeschrieben werden
Der Filesystem Cache vom Betriebssystem ist auch noch da, d.h. ein Read/Write in der Firebird Statement I/O Statistik bedeutet nicht notwendigerweise ein echtes lesen/durchschreiben von/auf die (rotierende) Disk.

Man kann aber Firebird mitteilen, dass man keinen Filesystem Cache verwenden möchte, was bei vergleichbaren Benchmarks wo man sich mit dem PageBuffers Wert spielt, durchaus ratsam ist.

LG
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 11:50
PS: Ich bin nach wie vor der Meinung, dass für das Klientel von Firebird, das sich hier bewegt, eine SSD das eigentliche Problem verschleiert. Aber das ist Ansichtssache.

Ein Problem hier ist nämlich, dass Entwicklungsmaschinen in der Regel bereits immer mit Consumer-SSDs ausgerüstet sind, d.h. der Entwickler wird nie so wirklich in Versuchung zu kommen etwas zu optimieren, weil es eh immer schnell ist, vor allem auch wenn nur mit 1% Datenvolumen getestet wird.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 13:07
Die Fakten, die ich hier aufführe, basieren auf den Erkenntnissen und Hardware, die ich bei den Kunden vorfinde.

Wer die Hardware und Software für Firebird auswählt, sollte eigentlich eine grobe Ahnung davon haben, was bei einer Datenbank und insbesondere bei einer Firebird Datenbank wichtig ist. Fakt ist leider, das die meisten Admins glauben, die Weisheit mit Löffeln gefressen zu haben und sich da von ihrem Hardware Fritzen alles andrehen lassen, was gut und teuer ist.

Wenn man vorher mal jemand wie Thomas oder mich fragt, würde so manch ein Hardwarefritze da enttäuscht sein. Einfacher ist oft besser ...

Beispiele aus der Praxis:

Test einer ganz aktuellen High End Schlag mich tot I/O PCIe Einsteckkarte mit ganzen tollen IOMeter Testwerten, worauf der Hardwarehersteller auf der Messe ganz stolz war. Auf meine Frage, ob ich das mal mit unserem Benchmark testen darf, hat der Hersteller das unerwartet gerne genehmigt. Hab ich dann auch gemacht, war aber am Ende nicht schneller als eine 200 € SSD in einer 08/15 Xeon Kiste, eher langsamer. Sollte aber alleine als SSD 8500 € kosten, mit der 24 Kern CPU usw. noch zusätzlich ca 10000 € ....

Noch ein Beispiel: Kunde sieht auf einer Messe ein Rack Storage System von einem US Start Up mit 12 TB SSDs als Raid mit diversen Schnick Schnack Technologien. Das sollte das schnellste, tollste und beste sein, was es auf der Welt gibt. Kostete so in der Konfiguration allerdings auch 250.000 US$. Kunde lässt sich überreden zu einer kostenlosen 30 Tage Leihstellung. Wir testen das gemeinsam und die Ergebnisse für Firebird sind unteridisch, mein Laptop war deutlich schneller. Im Multiusertest (unser Benchmark geht optional auch mit 100 threads und zehnfacher DB Größe) brach die Performance total zusammen, weil wohl jeder Zugriff irgendwie serialisiert ist. Als Filesystem was das Ding aber irre schnell (Große Dateien kopieren mit 5GB pro Sekunde war schon ganz nett). Ist aber egal, weil das als backend für Firebird gedacht war und dafür komplette Geldverschwendung.

Das Problem ist aber, das du als Entwickler dir nicht erklären kannst, was da beim Kunden so seltsam ist, wenn du keinen reproduzierbaren Messwert hast und dem Kunden vorführen kannst, das seine angeblich so tolle Maschine für Firebird unbenutzbar ist.

Wenn dann der beste Freund vom Geschäftsführer des Endkunden ein Systemhaus hat und sich ja mit alles super auskennt, dann wird dein Endkunde dir nicht glauben, bis du reproduzierbar nachweisen kannst, das die von Ihm gewählte Hardware/Software Kombination für Firebird nicht geeignet ist, egal wie schnell man darauf Dateien von A nach B kopieren kann.

Bei einem unserer Kunden, wo unser Benchmark auf dem Server seines Endkunden über 2 Stunden brauchte (normal sind weniger als 2 Minuten, schnell ist weniger als eine Minute), hilft es auch nicht, deine Software noch weiter zu optimieren. Auf so einer Gurke (die vom besten Kumpel des Endkunden, seines zeichens Inhaber eines Systemhauses und Ahnung von alles habend, an Ihn verkauft wurde) wirst du niemals eine akzeptable Leistung haben. Ohne vergleichbaren Messwert kannst du aber nichts machen.

Wenn der Kunde geizig ist und es ihm völlig egal ist, ob die Mitarbeiter die meiste Zeit des Tages mit warten auf die Software verbringen, dann kann dein Kunde das ja gerne selbst entscheiden. Wenn du aber als Softwarehersteller irgendwas in die Leistungsbeschreibung reinschreibst wie xxx ghz, xxx GB Ram und Raid o.ö, dann bist du vielleicht dafür verantwortlich, das es beim Kunden mehr Wartezeit als Arbeitszeit gibt, weil der einfach nur mit der Vorlage zum Hardwareheini geht und der dann was zusammenstellt, das deiner Beschreibung entspricht. Wenn es dann lahm ist, hinterfragt der zu Recht deine Software. Wir haben einige Kunden, die mittlerweile beim Server mindestens 100% Leistung beim IBExpert Benchmark fordern und das mit der Tageslizenz auch testen. Wenn die dann auf einen Rechner mit 50% treffen, sind die Fronten geklärt. Es ist dann Entscheidung des Kunden, den Rechner trotz mangelhafter Leistung zu nehmen und damit die Wartezeit der Anwender in Kauf zu nehmen. 1 Sekunde Wartezeit kostet im Schnitt ca. 0,6 ct an Arbeitskosten. Da kommt einiges zusammen, wenn in einer größeren Firma die Mitarbeiter bei jedem Prozess dauernd 10 Sekunden warten muß, weil der Admin einen ungeeigneten Server ausgewählt hat.

In der Kombination mit Virtualisierung vertrödelt man dann ggf noch mehr Leistung, aber Hauptsache der Admin kann die VM schnell mal eben von node a auf node b schubsen kann, falls node a mal ausfällt, obwohl das in der Vergangenheit noch nie der Fall war.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 13:54
Zitat:
In der Kombination mit Virtualisierung vertrödelt man dann ggf noch mehr Leistung, aber Hauptsache der Admin kann die VM schnell mal eben von node a auf node b schubsen kann, falls node a mal ausfällt, obwohl das in der Vergangenheit noch nie der Fall war.
Das kommt aus der Praxis! ...man muss halt die Prioritäten schon richtig setzen...
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Firebird optimal einstellen

  Alt 10. Okt 2014, 19:39
hier noch ein Link auf einen etwas älteren Thread

http://www.delphipraxis.net/180125-w...-firebird.html
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.653 Beiträge
 
Delphi 12 Athens
 
#8

AW: Firebird optimal einstellen

  Alt 11. Okt 2014, 11:39
1 Sekunde Wartezeit kostet im Schnitt ca. 0,6 ct an Arbeitskosten. Da kommt einiges zusammen, wenn in einer größeren Firma die Mitarbeiter bei jedem Prozess dauernd 10 Sekunden warten muß, weil der Admin einen ungeeigneten Server ausgewählt hat.
Wo hast du solche Zahlen her? Bei uns läuft SAP und da warten wir schon mal 10 Sekunden für eine Transaktion.
Auch andere Sachen sind nicht performant. Da könnte ich mal zusammenrechnen, was so alles "verpulvert" wird.
Hat jetzt nichts direkt mit Firebird zu tun, ist aber trotzdem interessant.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Firebird optimal einstellen

  Alt 11. Okt 2014, 12:55
1 Sekunde Wartezeit kostet im Schnitt ca. 0,6 ct an Arbeitskosten. Da kommt einiges zusammen, wenn in einer größeren Firma die Mitarbeiter bei jedem Prozess dauernd 10 Sekunden warten muß, weil der Admin einen ungeeigneten Server ausgewählt hat.
Wo hast du solche Zahlen her? Bei uns läuft SAP und da warten wir schon mal 10 Sekunden für eine Transaktion.
Auch andere Sachen sind nicht performant. Da könnte ich mal zusammenrechnen, was so alles "verpulvert" wird.
Hat jetzt nichts direkt mit Firebird zu tun, ist aber trotzdem interessant.
Simple mathematik, die mal in Zusammenarbeit mit einem Projekt für einen Großkunden berechnet wurden.

Gehen wir mal von einem bruttolohn inkl Arbeitgebernebenkosten von 3500 € pro Monat für
20 Arbeitstage mit je 8 Stunden aus. Dann bist du bei einem Stundenlohn von ca. 22 €
Eine Stunde hat 3600 Sekunden, also ist die Sekunde mit 22/3600 zu bewerten, also ca. 0,6 ct.

Das stellt aber keinesfalls die Vollkostenrechnung dar, weil der Mitarbeiter ja während der Zeit
auch noch meistens in einem geheizten Büro sitzt und der Computer noch Strom verbraucht und
an vielen Tagen im Jahr auch sicherlich auch noch Licht an ist, man gerade mit dem Kunden
telefoniert, der auf die Auskunft wartet, usw.

Bei dem Projekt ging es darum, den Vorteil zu berechnen, wenn ein Vorgang, der im Unternehmen
ca. 800000 mal pro Jahr durchgeführt wird, nicht mehr 120 Sekunden dauert, sondern nur noch
30 Sekunden. Das kommt reichlich zusammen, nämlich ca 430000 € pro Jahr.

Am Ende wurde die Berechnung auch dafür benutzt, das eine neue (nicht von uns stammende)
Software nicht eingeführt wurde, weil man dadurch für einen anderen Vorgang, der 300000 mal
pro Jahr ausgeführt wird, in der alten (Delphi basierenden) Software ca. 20 Sekunden dauerte
und in der neuen (Webbasierend) auch nach mehrfachen Versuche nicht in weniger als 600 Sekunden
durchführbar war. 300000*580 Sekunden, man hätte also dafür ca. 30 neue Mitarbeiter
einstellen müssen, um die gleiche Arbeit erledigen zu können. Wollte man dann aber auch
nicht ...

Wenn man zum Beispiel bei eine PKW Hersteller merkt, das man durch eine unsinnige
Einbaureihenfolge mehr Zeit braucht als in einer sinnvollen Reihenfolge, stößt das dort
sofort auf offene Ohren und die gesamten Prozesse werden hinterfragt.

Im Softwareumfeld ist das leider keineswegs der Fall. Gerade bei SAP ist das eben so, die
umständlichen Vorgänge und langen Reaktionszeiten dort zu hinterfragen gilt ja fast als
Gotteslästerung, zumindest bei der IT Leitung, die für die SAP Einführung verantwortlich
ist.

Bei inhabergeführten Unternehmen oder einer weniger ignoranten Geschäftsführung ist das
oft ein Argument, mal gewisse Prozesse zu hinterfragen, insbesondere wenn das mit konkreten
Zahlen hinterlegt ist und nicht einfach nur Meckerei über die lahme Software ist.

p.s.: Wir haben in dem o.a. Projekt auch noch mit dem Tool von http://www.mousometer.de/
auch gleich gemessen, wie viel Weg man während der Eingabe mit der Maus abklappern muss,
man wundert sich da, wie viel Meter da bei blöden Benutzerinterfaces zusammenkommen.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz