Subject | BDE-to-IBO conversion: performance issues |
---|---|
Author | Michele |
Post date | 2005-04-13T13:03:18Z |
Hi all,
this is my first post here, so I hope I'm not asking an overworked or
excessively generic question (I've just searched the group message
base for it, but I didn't find relevant answers). Oh, by the way,
excuse my English too: it's not my native language, I'll try to do my
best. :-)
Back to the mail topic, I work as a Delphi programmer in a small
software house, and we are converting our main application database
from BDE/Paradox to Firebird: we chose IB Objects as our new database
access components, hoping to obtain, among other benefits, an overall
performance boost in database operations (which are quite frequent,
since our application is an hotel management program).
For compatibility reasons we replaced the previous standard Delphi
TDataset data access components with the corresponding TIBO
equivalents, but doing so (basically a simple 1-to-1 substitution with
minor adjustments) we immediately noticed a remarkable performance
drop in all database intensive operations!
Our application database contains over 70 tables, accessed through a
TIBODatabase object which feeds and equal amount of TIBOTables grouped
in a TDataModule. Usually each form of the application creates and
uses its own private instance of the above mentioned TDataModule,
opening only the tables it requires, and since each form is re-created
each time it is needed (and re-destroyed each time it is closed), the
database tables are continuously opened and closed, possibly from
multiple TDataModules at the same time (it's an MDI application, so
multiple forms, and multiple TDataModule, can be active simultaneously).
Can this particular data access architecture be the cause of the
performance drop we recorded? It works quite well with Delphi standard
data access components and BDE/Paradox, but perhaps it's not suited to
TIBO components and Firebird...
Or are we missing something?
Are there any legacy BDE operation/feature/component properties
configuration/whatsoever which is particularly inadvisable
performance-wise for TIBO components and which we should avoid at all
costs?
The same operation is sometimes *several times* slower with
TIBO/Firebird than it was with BDE/Paradox, using the same code and
the same (converted) database: according to several sources I found on
the web, IBObjects are tipically much more efficient than this, so
what are we doing wrong? :-(
Any help to point us in the right direction will be _much_
appreciated, and if you need more specific informations (code samples,
tests, whatsoever) to get a better insight on the problem, just ask,
I'm at your complete disposal!
Thank you very much,
Michele.
this is my first post here, so I hope I'm not asking an overworked or
excessively generic question (I've just searched the group message
base for it, but I didn't find relevant answers). Oh, by the way,
excuse my English too: it's not my native language, I'll try to do my
best. :-)
Back to the mail topic, I work as a Delphi programmer in a small
software house, and we are converting our main application database
from BDE/Paradox to Firebird: we chose IB Objects as our new database
access components, hoping to obtain, among other benefits, an overall
performance boost in database operations (which are quite frequent,
since our application is an hotel management program).
For compatibility reasons we replaced the previous standard Delphi
TDataset data access components with the corresponding TIBO
equivalents, but doing so (basically a simple 1-to-1 substitution with
minor adjustments) we immediately noticed a remarkable performance
drop in all database intensive operations!
Our application database contains over 70 tables, accessed through a
TIBODatabase object which feeds and equal amount of TIBOTables grouped
in a TDataModule. Usually each form of the application creates and
uses its own private instance of the above mentioned TDataModule,
opening only the tables it requires, and since each form is re-created
each time it is needed (and re-destroyed each time it is closed), the
database tables are continuously opened and closed, possibly from
multiple TDataModules at the same time (it's an MDI application, so
multiple forms, and multiple TDataModule, can be active simultaneously).
Can this particular data access architecture be the cause of the
performance drop we recorded? It works quite well with Delphi standard
data access components and BDE/Paradox, but perhaps it's not suited to
TIBO components and Firebird...
Or are we missing something?
Are there any legacy BDE operation/feature/component properties
configuration/whatsoever which is particularly inadvisable
performance-wise for TIBO components and which we should avoid at all
costs?
The same operation is sometimes *several times* slower with
TIBO/Firebird than it was with BDE/Paradox, using the same code and
the same (converted) database: according to several sources I found on
the web, IBObjects are tipically much more efficient than this, so
what are we doing wrong? :-(
Any help to point us in the right direction will be _much_
appreciated, and if you need more specific informations (code samples,
tests, whatsoever) to get a better insight on the problem, just ask,
I'm at your complete disposal!
Thank you very much,
Michele.