Hallo zusammen,
ich habe gerade ein Problem mit der ZEOS-Lib 7.1.4-stable und Firebird 2.5. In einem Testaufbau habe ich nur ein Datamodule mit der ZCONNECTION-Komponente sowie ein Formular mit einem TDBGrid, einer ZQuery und einer TDataSource. Das SQL benötigt mit ZEOS rund 30 Sekunden, sobald ich die ZQuery öffne!
Baue ich das selbe mit den UIB-Komponenten auf (UIBDatabase im Datenmodul, UIBDataset für das SQL) oder löse das Select in IBExpert oder anderen Tools für Firebird aus, geht das in < 1 Sekunde.
Das Problem tritt nur auf, wenn der Firebird-Server auf einem anderen Rechner im Netz läuft, liegt alles auf Localhost ist kein Unterschied zwischen ZEOS und anderen Zugriffskomponenten feststellbar (ohne Messung, aber dann ist die Wartezeit mit < 1 Sekunde so kurz, dass sich keine Messung lohnt ob es nun 0,2 oder 0,7 Sekunden sind...).
Das Select im Testaufbau ist ein simples select * from tabelle, die Tabelle hat knapp 1000 Datensätze, allerdings mit einigen VarChar-Feldern mit viel Text. Alle Komponenten sind nur mit den ötigsten Properties konfiguriert:
ZConnection:
Hostname: ip-Adresse des Servers
Databasename: testdb (alias)
protocol firebird-2.5
sqlHourglass false
ZQuery:
alle Einstellungen Standard wie beim Einfügen im Formular, nur Database und SQL eingetragen
Über ein NetzwerkMonitoring sehe ich, dass Zeos bei diesem Select mit einer Geschwindigkeit von 800-1200KB/s rund 30 Sekunden lang Daten überträgt. Ein testweise ausgelöster reiner Kopiervorgang vom Server auf den Client (Datei kopieren) läuft mit 12-15MByte/s. Das Netzwerk ist also OK und wenn Zeos hier ebenfals 10MByte statt < 1 MByte nutzen würde, müsste es in knapp 3 Sekunden fertig sein. Das wäre immer noch 3 mal so lange wie mit UIB oder in IB Expert.
Ich habe schon etliche Einstellungen der ZConnection und der ZQuery versucht, aber völlig ohne eine Auswirkung auf die Geschwindigkeit.
Ich habe keine Idee, wo ich nach der Ursache für diesen extrem langsamen Zugriff suchen soll.
Das Testprogramm ist auch nur entstanden, weil das Problem in einer größeren Applikation auftritt, die bereits etliche Zugriffe über die ZEOS-Komponenten enthält und die ich nur ungerne auf einen komplett anderen Zugriff umbauen möchte (nur wenn es mit ZEOS gar nicht hinzubekommen ist...).
Gerne liefere ich weitere Infos, wenn mit den obigen Daten keine ausreichende Basis für Tips/Lösungsvoschläge vorhanden ist.
Viel Grüße,
Siegbert
ich habe gerade ein Problem mit der ZEOS-Lib 7.1.4-stable und Firebird 2.5. In einem Testaufbau habe ich nur ein Datamodule mit der ZCONNECTION-Komponente sowie ein Formular mit einem TDBGrid, einer ZQuery und einer TDataSource. Das SQL benötigt mit ZEOS rund 30 Sekunden, sobald ich die ZQuery öffne!
Baue ich das selbe mit den UIB-Komponenten auf (UIBDatabase im Datenmodul, UIBDataset für das SQL) oder löse das Select in IBExpert oder anderen Tools für Firebird aus, geht das in < 1 Sekunde.
Das Problem tritt nur auf, wenn der Firebird-Server auf einem anderen Rechner im Netz läuft, liegt alles auf Localhost ist kein Unterschied zwischen ZEOS und anderen Zugriffskomponenten feststellbar (ohne Messung, aber dann ist die Wartezeit mit < 1 Sekunde so kurz, dass sich keine Messung lohnt ob es nun 0,2 oder 0,7 Sekunden sind...).
Das Select im Testaufbau ist ein simples select * from tabelle, die Tabelle hat knapp 1000 Datensätze, allerdings mit einigen VarChar-Feldern mit viel Text. Alle Komponenten sind nur mit den ötigsten Properties konfiguriert:
ZConnection:
Hostname: ip-Adresse des Servers
Databasename: testdb (alias)
protocol firebird-2.5
sqlHourglass false
ZQuery:
alle Einstellungen Standard wie beim Einfügen im Formular, nur Database und SQL eingetragen
Über ein NetzwerkMonitoring sehe ich, dass Zeos bei diesem Select mit einer Geschwindigkeit von 800-1200KB/s rund 30 Sekunden lang Daten überträgt. Ein testweise ausgelöster reiner Kopiervorgang vom Server auf den Client (Datei kopieren) läuft mit 12-15MByte/s. Das Netzwerk ist also OK und wenn Zeos hier ebenfals 10MByte statt < 1 MByte nutzen würde, müsste es in knapp 3 Sekunden fertig sein. Das wäre immer noch 3 mal so lange wie mit UIB oder in IB Expert.
Ich habe schon etliche Einstellungen der ZConnection und der ZQuery versucht, aber völlig ohne eine Auswirkung auf die Geschwindigkeit.
Ich habe keine Idee, wo ich nach der Ursache für diesen extrem langsamen Zugriff suchen soll.
Das Testprogramm ist auch nur entstanden, weil das Problem in einer größeren Applikation auftritt, die bereits etliche Zugriffe über die ZEOS-Komponenten enthält und die ich nur ungerne auf einen komplett anderen Zugriff umbauen möchte (nur wenn es mit ZEOS gar nicht hinzubekommen ist...).
Gerne liefere ich weitere Infos, wenn mit den obigen Daten keine ausreichende Basis für Tips/Lösungsvoschläge vorhanden ist.
Viel Grüße,
Siegbert
Comment