Michael Van Canneyt escreveu:
On Sun, 26 Feb 2006, Luiz Americo Pereira Camara wrote:
Michael Van Canneyt escreveu:
Maybe it's easier to revert your component to SQLDb.
Probably not. As i said is just a question of time. The design is
already on my mind and the implementation seems not to be difficult.
SQLDB has a working ApplyUpdates, even for queries
with fields of more than one table.
In my experience sqldb.ApplyUpdates is not working at all:
http://www.freepascal.org/bugs/showrec.php3?ID=4725.
And its internals is somewhat slower(the results are in miliseconds):
http://www.geocities.com/camara_luiz/sqlite4fpc/benchmarks.html.
These results are very strange. I am writing articles about
embedded databases, and while for simple queries, Sqlite
is really fast, for complicated queries, it's a factor 12
or more _slower_ than either mysql or firebird.
You are welcome to run my benchmarks yourself.
I'm talking about running 600.000 queries here, inserting
over 600.000 records. (and yes, I did optimize transactions
and so on)
Are you sending the Sql statements using plain sqlite functions
(sqlite_exec) or the TSqliteDataset ones (ExecSql and ApplyUpdates)?
I found that significant part of the time when sending sql statements is
wasted in the Sql statement building (String concatenation)
Did you use the sqldb components to test mysql and firebird?
Can you post the source of the tests (also Mysql and firebird ones)?
I can try with the new version of TSqliteDataset.
Anyway inserting/updating 600000 records are not common use of Desktop
applications ;-)
You would then also have parameter support and so on.
Anyway, i think that sqldb and TSqliteDataset are for different
purposes. While the first offers full support to Client/Server
databases, transactions, rollbacks etc., the second is good for
Desktop/embedded applications that need to manipulate data. Also
TSqliteDataset offers the ability to easily (with few lines of code)
create databases at runtime, even in disk or in memory databases (using
filename ':memory:').
The outcome of my investigations is unfortunately not so favourable
for the combination sqlite/pascal ;-)
I'd like to point that Sqlite (the library itself) is not adequate to
all scenarios. It has your specific indications as MySql, PostGreSql,
Oracle also has yours. See http://www.sqlite.org/whentouse.html
Luiz
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives