Hi SQLiters,

We're currently investigating SQLite in an application that needs to issue a 
batch of queries (SELECTs) before doing some work with all the data returned.

I have been trying to figure out the fastest way to get the results.  Given 
there are no writes involved, I figured there might be some advantages in 
having the queries run on separate threads, with a connection each, but with a 
shared cache and the read uncommitted flag set ON.  This works fine, but the 
cumulative time for all the queries is in the same ballpark as if the queries 
were serialised, despite having SQLITE_CONFIG_MULTITHREAD set, 
SQLLITE_CONFIG_MEMSTATUS off, with SQLITE_OPEN_SHAREDCACHE and 
SQLITE_OPEN_NOMUTEX used on open.

So, I'm not sure exactly how to configure (build and runtime) SQLite so it 
allows database reads to be essentially independent and lock-free.

As an experiment, I wrote a simple program to do the same kind of query and ran 
several of these in parallel as processes (against the same database file).  In 
this case, I'm seeing very parallel behaviour, and all queries complete in just 
over the time it would normally take for a single one.

The process experiment seems to confirm that very fast independent parallel 
queries can be made on the same database, but clearly I would like the same 
behaviour using multiple threads (and probably connections) in the same 
process.  Is this possible with some specific configuration of SQLite?

Cheers!

-- Luke


_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to