[yunqa.de] DISQLite: disadvantage to using a transaction?

  • From: "Michael J. Leaver" <MJLeaver@xxxxxxxxxxxxxxxxx>
  • To: <yunqa@xxxxxxxxxxxxx>
  • Date: Wed, 21 Nov 2007 18:51:51 +0800

Hi,

I'm looking to use DISQLite to store temporary lists. The database (with
only one table) is created, populated, then deleted once the thread is
finished. The database is accessed exclusively by only one thread, no
locking is needed, and maximum performance is required. Rows are selected by
their row ID only.

The reason for using a database is that I want to reduce memory usage.
Previously the lists were stored in memory (using TStringList). By putting
the list data into a database I hope to reduce the memory usage. There can
be potentially hundreds of thousands of list entries.

Now for the stupid question :) Using a database transaction increases insert
and update performance hugely. I also notice that I can read the updated
data (via SELECT) even before it has been committed. So, the stupid question
is, what is the disadvantage (in my situation) to starting a transaction as
soon as I've created the database? Surely there must be a drawback
somewhere? Is SELECT slower (I'm just using the RowID) or could it return
the wrong results? Is memory usage going to be higher?

If relevant, for PRAGMA I've got locking_mode=EXCLUSIVE and synchronous=OFF

Thanks,
Michael J. Leaver
2BrightSparks Pte Ltd
http://www.2BrightSparks.com/
 

_______________________________________________
Delphi Inspiration mailing list
yunqa@xxxxxxxxxxxxx
//www.freelists.org/list/yunqa



Other related posts: