I have a fairly large DB that I need to only read (not write) as fast as possible. I open DB with flags SQLITE_OPEN_READONLY|SQLITE_OPEN_PRIVATECACHE and then run select queries in 8 threads.

When each thread opens its own connection, DB is read in 8 wallclock seconds using 23 user seconds.

When DB connection is shared by threads, though, the process reads the same data in 17 wallclock seconds using 20 user seconds, much slower overall, killing the parallelism benefit.


Reusing RO connection for some reason makes threads wait for each other too much. What makes the single connection to slow the process down?


In an attempt to speed it up as much as possible, I was trying to first copy into :memory: db, so that threads would read only from memory, but this requires the shared connection and it is slower.


sqlite3-3.12.2


Yuri

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

Reply via email to