Ok - yet another test. This time, with WAL enabled. Results are much better:
------------------------------------------------------------------ SELECT_COUNT: 1,000,000 THREAD_COUNT: 2 Testing with one connection (ReadWrite) and filled table... Elapsed: 15.8 s (126,316.8 stmt/sec) Testing with multiple connections (ReadWrite) and filled table... Elapsed: 41.0 s (48,792.7 stmt/sec) ------------------------------------------------------------------ SELECT_COUNT: 133,333 THREAD_COUNT: 15 Testing with one connection (ReadWrite) and filled table... Elapsed: 11.3 s (177,669.7 stmt/sec) Testing with multiple connections (ReadWrite) and filled table... Elapsed: 11.1 s (180,816.2 stmt/sec) ------------------------------------------------------------------ SELECT_COUNT: 20,000 THREAD_COUNT: 100 Testing with one connection (ReadWrite) and filled table... Elapsed: 11.3 s (177,155.8 stmt/sec) Testing with multiple connections (ReadWrite) and filled table... Elapsed: 13.6 s (146,847.6 stmt/sec) - Sebastian On Mon, Sep 24, 2012 at 11:26 AM, Sebastian Krysmanski <maya.li...@gmail.com > wrote: > Ok, I tried that. It definitely improves performance when using a lot > threads (15+) but decreases the performance considerably when using only > two thread (from 60s down to 100s). > > ------------------------------------------------------------------ > SELECT_COUNT: 1,000,000 > THREAD_COUNT: 2 > Testing with one connection (ReadWrite) and filled table... > Elapsed: 58.9 s (33,938.7 stmt/sec) > Testing with multiple connections (ReadWrite) and filled table... > Elapsed: 102.7 s (19,482.7 stmt/sec) > > > ------------------------------------------------------------------ > SELECT_COUNT: 133,333 > THREAD_COUNT: 15 > Testing with one connection (ReadWrite) and filled table... > Elapsed: 12.3 s (162,647.6 stmt/sec) > Testing with multiple connections (ReadWrite) and filled table... > Elapsed: 12.7 s (157,324.1 stmt/sec) > > > ------------------------------------------------------------------ > SELECT_COUNT: 20,000 > THREAD_COUNT: 100 > Testing with one connection (ReadWrite) and filled table... > Elapsed: 11.8 s (169,204.7 stmt/sec) > Testing with multiple connections (ReadWrite) and filled table... > Elapsed: 15.0 s (133,612.1 stmt/sec) > > - Sebastian > > On Fri, Sep 21, 2012 at 7:45 PM, Keith Medcalf <kmedc...@dessus.com>wrote: > >> >> On Friday, 21 September, 2012, @10:53, Sebastian Krysmanski said: >> >> > I wish it were like you said. However, in my understanding multiple >> > connections to the same database are realized by file system locks. So >> > switching from serialized to multi-threading mode doesn't make much >> > difference because the main slow down are the file system locks. >> >> Can you try passing the SQLITE_OPEN_SHAREDCACHE and SQLITE_OPEN_NOMUTEX >> to the connection per thread and see how that behaves. You get the same >> advantage of reducing I/O and memory management by using a single >> page-cache, yet you now no longer have serialization (or mutexes to enforce >> serialization) in the library call path. If the serialization/mutex code >> is causing any significant performance effect, this should demonstrate it >> clearly. >> >> --- >> () ascii ribbon campaign against html e-mail >> /\ www.asciiribbon.org >> >> >> >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> > > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users