Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Geschwindigkeit (https://www.delphipraxis.net/140951-firebird-geschwindigkeit.html)

Delix 29. Sep 2009 16:09

Datenbank: Firebird • Version: 1.5.5 • Zugriff über: Zeos

Firebird Geschwindigkeit
 
Hallo zusammen!

Ich habe ein Problem mit Firebird (1.5.5). Um die Geschindigkeit zu optimieren, haben wir ein kleines Testprogramm geschrieben, welches 1000 Select-Anweisungen ( ca. 50 Spalten, jeweils eine Zeile ) durchführt.

Auf einem Rechner benötigt das System 48 Sec., auf einem anderen, etwas leistungsstärkeren, dauert es 2 Min. 6 Sec. Beide Rechner greifen über das selbe Netz auf die selbe Datenbank zu. Der schnellere Rechner hat eine Netzwerkauslastung von ca. 10 %, der langsamere ca. 5 %. Das ist sogar logisch, aber was kann die Ursache sein. bzw. was ist zu tum?

Schöne Grüße

neo4a 29. Sep 2009 18:07

Re: Firebird Geschwindigkeit
 
Versuche die einzelnen Komponenten zu separieren und dadurch herauszufinden, an welchen Prozess es überhaupt liegt.

Dazu würde ich als erstes auf die DB lokal per embedded Firebird zugreifen. Damit eleminierst Du den ganzen Netzwerk-Teil (Switch, priorierte Netze, Serverauslastung durch andere Prozesse etc.). Als nächstes würde ich mit einem Profiling- oder Monitoring- Tool die einzelnen Abfragen verfolgen. Nun kenne ich Zeos nicht, benutze bei IBO dafür die mitgelieferte Monitor- Komponente.

--
Andreas

alzaimar 29. Sep 2009 18:39

Re: Firebird Geschwindigkeit
 
Nach jedem SELECT ein 'rollback' sollte die Performance drastisch steigern, auch wenn es sinnlos klingt.

neo4a 29. Sep 2009 18:50

Re: Firebird Geschwindigkeit
 
Zitat:

Zitat von alzaimar
Nach jedem SELECT ein 'rollback' sollte die Performance drastisch steigern, auch wenn es sinnlos klingt.

Wenn das ernst gemeint war, interessiert mich der Hintergrund. Auch dann, wenn es nicht die Antwort auf die Frage ist, warum bei 2 Rechnern eine Aktion/Abfrage unterschiedlich lange dauert.

--
Andreas

borwin 29. Sep 2009 19:20

Re: Firebird Geschwindigkeit
 
Sind die Statistiken in beiden Datenbanken identisch? Ggf. mal neu erstellen.

Gruß Borwin

alzaimar 29. Sep 2009 20:11

Re: Firebird Geschwindigkeit
 
Zitat:

Zitat von neo4a
Wenn das ernst gemeint war, interessiert mich der Hintergrund. Auch dann, wenn es nicht die Antwort auf die Frage ist, warum bei 2 Rechnern eine Aktion/Abfrage unterschiedlich lange dauert.

Firbeird arbeitet so (soweit ich das verstanden habe), dass jede Aktion in einer eigenen TRansaktion gestartet wird. Jeder sieht einen 'Snapshot' des jeweiligen Datenbankzustandes. Wenn ich *kein* Rollback (nach einem SELECT!) ausführe, wird Firebird immer langsamer, weil es mit jedem SELECT eine neue Transaktionsumgebung mitpflegen muss.

Es könnte wirklich sein, das der 2.Test deshalb langsamer ist (Wenn Du ihn nach dem ersten Test ausführst). Du greifst doch immer auf den selben DB-Server zu, oder? Treiberversion ist auch die Gleiche?

Wenn Du Rollbacks einbaust und gleiche Treiber dein Eigen nennst, wird's schwierig. Wenn es viele Daten sind, könnte aber die CPU/RAM-Architektur eine Rolle spielen. Aber das ist wirklich unseriöses 'ins Blaue raten'.

tsteinmaurer 29. Sep 2009 20:20

Re: Firebird Geschwindigkeit
 
Hallo,

bzgl. Rollback vs. Commit ist es genau umgekehrt. :-D

Lieber ein Commit als ein Rollback, wenn man es sich aussuchen kann (d.h. z.B. bei SELECTs, wo nichts geändert wird), da der OIT Counter per Definition die älteste nicht committete Transaktion ist. Die Engine ist zwar so clever, dass genau deswegen ein Rollback zu einem Commit gemacht wird, wenn das sicher ist.

An den Originalposter: Die DBs befinden sich auf einem Server oder (versehentlich) auf dem lokalen Rechner? Wie siehts mit Anzahl CPUs/Cores auf den Rechnern aus?

Delix 30. Sep 2009 07:26

Re: Firebird Geschwindigkeit
 
Es geht hier rein um ein Testprogramm zum Ermitteln des Geschwindigkeitsverhaltens der einzelnen Komponenten PC, Netzwerk, Server. Hier muss also nichts optimiert werden. Es ist tatsächlich die selbe Datenbank auf dem selben Server. In der Datenbank wird eigens für den Test eine Tabelle neu angelegt und gefüllt. Alle haben immer die selben Bedingungen. Die SQL-Anweisungen sind so aufgebaut, das ohne schwierige Suche jeweils die Daten gefunden werden ( SELECT * FROM TABELLE WHERE ID=x ). Der Flaschenhals dürfte hier das Netz sein. Es geht tatsächlich rein um die Frage, wie kann der Test auf einem PC 3 mal schneller laufen als auf dem anderen?

Bin für jeden Tipp dankbar

Schöne Grüsse

fkerber 30. Sep 2009 07:38

Re: Firebird Geschwindigkeit
 
Hi!

Gibt es vllt. Unterschiede in der Anbindung der Rechner?
100Mbit vs. 1000MBit?
Switch mehr dazwischen o.ä.?


Grüße, Frederic

Delix 30. Sep 2009 07:47

Re: Firebird Geschwindigkeit
 
Hallo!

Nein, kein Unterschied. Beide mit 100 MBit mit dem selben Umfeld. Auffällig ist halt, das ein Rechner 10% Netzlast hat, der andere nur 5 %. Beim Kopieren großer Dateien geht die Last voll hoch. Die Anzeige der Netzwerkauslastung wirkt wie gedeckelt - schön flach bei bei 5 %. Alle anderen Zugriffe gehen hoch.

Schöne Grüße
Hubert


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz