very slow with D2009 and remote firebird 2.1 DB
very slow with D2009 and remote firebird 2.1 DB
Hi I just tested your last dbexpress driver (3.0) with D2009 and remote Firebird 2.1. I created few TSQLConnection and TSQLQuery objects with standard Firebird driver (from D2009), with Upscene and with Devart.
And execute something like this:
SQLQuery1.Open;
I := 0;
while not SQLQuery1.Eof do begin
cxMemo2.Lines.Append(IntToStr(I)
+ ' ' + SQLQuery1.FieldByName('ID').AsString
+ ' ' + SQLQuery1.FieldByName('PAVADINIMAS').AsString
);
SQLQuery1.Next;
I := I + 1;
end;
And results in seconds was:
(DevartInterBase): Open: 5.221 Last: 33.981 Total: 39.202
(InterXpress for Firebird): Open: 0.227 Last: 0.634 Total: 0.861
(InterBase): Open: 0.036 Last: 0.661 Total: 0.697
Table has only 265 rows. Very long takes not only retrieve but open operation also. Wrong my devart driver settings or what?
My test project: http://e-servisas.lt/x/9.zip
Remote FB server is on slow network ~2MBits.
p.s. As i can see on my test project output - devart driver reads records in chunks of 25 and it takes few seconds. Why takes so long?
And execute something like this:
SQLQuery1.Open;
I := 0;
while not SQLQuery1.Eof do begin
cxMemo2.Lines.Append(IntToStr(I)
+ ' ' + SQLQuery1.FieldByName('ID').AsString
+ ' ' + SQLQuery1.FieldByName('PAVADINIMAS').AsString
);
SQLQuery1.Next;
I := I + 1;
end;
And results in seconds was:
(DevartInterBase): Open: 5.221 Last: 33.981 Total: 39.202
(InterXpress for Firebird): Open: 0.227 Last: 0.634 Total: 0.861
(InterBase): Open: 0.036 Last: 0.661 Total: 0.697
Table has only 265 rows. Very long takes not only retrieve but open operation also. Wrong my devart driver settings or what?
My test project: http://e-servisas.lt/x/9.zip
Remote FB server is on slow network ~2MBits.
p.s. As i can see on my test project output - devart driver reads records in chunks of 25 and it takes few seconds. Why takes so long?
I cannot reproduce such problem. Please try setting the UseUnicode connection parameter to False. Here is an example:
Code: Select all
SQLConnection.Params.Values['UseUnicode'] := 'False';
If you give me your ip address I can open connection to test database for you. My first test was through ssh tunnel. With this direct connection the time for your driver is much better but still not good as others:
DevartInterBase: Open: 0.657 Last: 3.999 Total: 4.656
InterXpress for Firebird: Open: 0.104 Last: 0.356 Total: 0.460
This is very strange why ssh tunnel influence in such big scale only to your driver.
DevartInterBase: Open: 0.657 Last: 3.999 Total: 4.656
InterXpress for Firebird: Open: 0.104 Last: 0.356 Total: 0.460
This is very strange why ssh tunnel influence in such big scale only to your driver.
We have investigated this question. This problem was caused by reading all BLOB data at the dataset opening. We have added the DeferredBlobRead and DeferredArrayRead connection options which help to avoid performance problem. DeferredBlobRead and DeferredArrayRead are used for fetching all BLOB and array values correspondingly when they are explicitly requested. To solve performance problem, you will have to set both DeferredBlobRead and DeferredArrayRead to True. These options will be available in the next dbExpress driver for InterBase & Firebird build.