Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   IBDAC extrem langsam (16 x langsamer als IBX) (https://www.delphipraxis.net/157847-ibdac-extrem-langsam-16-x-langsamer-als-ibx.html)

BlueStarHH 27. Jan 2011 08:44

Datenbank: Firebird • Version: 1.5 • Zugriff über: IBDAC

IBDAC extrem langsam (16 x langsamer als IBX)
 
Hallo,

ich greife über IBDAC auf eine Firebild-Datenbank zu, die auf einem Server liegt und per TCP angesprochen wird. Die DB hat ca. 20.000 Datensätze. Mit den IBDAC-Kompinenten dauert ein Select und der sprung zum letzten Datensatz mehr als 16 mal länger als mit IBX, die bei Delphi 2010 im Lieferumfang sind. Wie kann das sein? Wer hat Lösungsvorschläge? So kann man damit nicht arbeiten. Hier ein Beispiel:

Folgender Code wird per Buttonklick ausgeführt und dann wird im DBGrid zum letzten Datensatz gesprungen. Auch wenn man mit Query.Last dorthin springt, ändert sich nichts an den Zeiten.

IBDAC braucht 67 Sekunden:
Code:
Verwendet wird: TIBCQuery, TIBCConnection, TDataSource, TDBGrid

  DB.Connect;
  IBCQuery1.SQL.Text := 'select * from mytable;
  IBCQuery1.Prepare;
  IBCQuery1.Open;
IBX braucht 4 Sekunden:
Code:
Verwendet wird: TIBQuery, TIBDatabase,TDataSource, TDBGrid

  IBDatabase1.Connected := true;
  IBQuery1.SQL.Text := 'select * from mytable;
  IBQuery1.Prepare;
  IBQuery1.Open;
Der Geschwindigkeitsunterschied bleibt bestehen, auch wenn ein where an das SQL-Statement angehängt wird. In diesem Test wurden 10.000 Datensätze zurückgegeben. Ja es müssen so viele sein. (=Alle Buchungen eines Monats).

Alle Komponenten wurde so wie sie sind aus der Komponentenpalette aufs Form gezogen. Es wurden keine weiteren Einstellung vorgenommen außer DBName + ServerIP.

Wer hat eine Idee das mit IBDAC schneller hinzubekommen? Woher kommen die drastischen Zeitunterschiede?

Lemmy 27. Jan 2011 09:16

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Hallo,

jetzt bin ich doch auch überrascht.. auch bei mir ist Faktor 10 drin. Wenn ich allerdings in der TIBCQuery in den Optionen "CacheArray" und "CacheBlobs" abschalte, sind beide wieder gleich schnell...
Frag doch mal beim Support/Forum bei IBDac nach ob das bekannt ist..

Grüße

BlueStarHH 27. Jan 2011 09:29

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Zitat:

Zitat von Lemmy (Beitrag 1077572)
Wenn ich allerdings in der TIBCQuery in den Optionen "CacheArray" und "CacheBlobs" abschalte, sind beide wieder gleich schnell...
Frag doch mal beim Support/Forum bei IBDac nach ob das bekannt ist..

Danke, wenn ich "CacheArray" und "CacheBlobs" abschalte, läuft es wirklich wieder schnell. Was ist denn der Nachteil, wenn diese beiden Optionen dauerhaft abgeschaltet bleiben? Ich habe DBMemos die werden ja als Blobs gespeichert. Wann wird das Array genutzt? Ich melde das mal beim IBDac-Support.

Lemmy 27. Jan 2011 09:43

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Hi,

Zitat:

Zitat von BlueStarHH (Beitrag 1077580)
Danke, wenn ich "CacheArray" und "CacheBlobs" abschalte, läuft es wirklich wieder schnell. Was ist denn der Nachteil, wenn diese beiden Optionen dauerhaft abgeschaltet bleiben? Ich habe DBMemos die werden ja als Blobs gespeichert. Wann wird das Array genutzt? Ich melde das mal beim IBDac-Support.

genau das weiß ich nicht - in der Hilfe steht darüber nicht wirklich was drin und ich habe auch gerade erst mit IBDAC angefangen.. Genau frag mal beim Support nach, ich schau ob ich noch Infos auftreiben kann...

BlueStarHH 27. Jan 2011 09:45

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Ich hab mal nach "CacheArray" und "CacheBlobs" gegoogelt. Und das gefunden:

http://www.devart.com/forums/viewtop...r=asc&start=15

Ein ähnliches Problem. Dort wird u.a. auch DeferredBlobRead := false gesetzt. Das alleine reicht schon aus, um die Geschwindigkeit zu erhöhen. "CacheArray" und "CacheBlobs" können dann auf true bleiben. Was macht DeferredBlobRead genau?

mkinzler 27. Jan 2011 09:47

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Vom Namen her, sorgt es für ein verzögerrtes Lesen von Blobs

Lemmy 27. Jan 2011 09:49

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Hi,

wenn ich Deferred einfach mal so übersetze heißt das verzögert, verschoben (http://www.dict.cc/?s=deferred)
Was da allerdings genau passiert weiß ich nicht - wie gesagt meine Hilfe zu den IBDac ist gerade nicht sehr mitteilsam....

Grüße

DelphiBandit 27. Jan 2011 09:54

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Wenn Du die Inhalte Deiner Blobs in Deiner Anzeige benötigst - also das Blob-Fetchen nicht abschalten kannst - und eine ungefähre Idee hast, wie lang die Blobs sein könnten, dann kann man sie nach VarChar casten, welches auch einen immensen Zeitvorteil bringt.

Beispiel:
Code:
SELECT id, surname, firstname, remarks FROM PERSONS; // remarks ist ein Textblob
... stattdessen
SELECT id, surname, firstname, CAST(SUBSTRING(remarks FROM 1 FOR 2048) AS VARCHAR(2048)) remarks FROM PERSONS
Nachteil:
Wesentlich mehr Schreibaufwand beim SQL-Statement

BlueStarHH 28. Jan 2011 16:35

AW: IBDAC extrem langsam (16 x langsamer als IBX)
 
Hier die Antwort vom Hersteller-Support (http://www.devart.com/forums/viewtopic.php?t=20112)

Zitat:

The CacheArray, CacheBlobs, DeferredBlobRead, and DeferredArrayRead options manage the way of working with BLOB and array content. If the CacheBlobs property is set to True, then local memory buffer is allocated to hold a copy of the BLOB content. If the DeferredBlobRead property is set to True, all BLOB values are only fetched when they are explicitly requested. To get the highest performance you should set DeferredBlobRead to True and CacheBlobs to True. In this case only requested portions of data will be fetched from the server. It's the same with the CacheArray and DeferredArrayRead options. For more information please read the IBDAC documentation.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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