If a DB is entirely in-memory (i.e., opened with :memory:), which pragmas
can be used to improve performance?

(1) I assume synchronous = OFF is desirable

(2) I'm guessing journal_mode = MEMORY is already set.  Is journal_mode =
OFF another possible speed gain?  Of course, then one loses the ability to
do transactions.

(3) If journaling is set to MEMORY, what is the best setting then for
journal_size_limit?  I guess it depends on how much memory one is willing to
use overall, but in this case, it's not there for crash protection but
rather to support transactions.  Is there a sizing guide?

(4) How about locking_mode?  I imagine it would be OK and a small gain to
set to NORMAL in a single-threaded application, but obviously not a good
idea for multi-threaded.

(5) If referential integrity can be sacrificed (the Oracle DBA in my
whimpers a little), foreign_keys = false, but that's true whether on-disk or
in-memory.

(6) Is there any advantage to playing with:
   - page_size?
   - default_cache_size?
   - read_uncommitted?  I assume there's a different answer for single- vs.
multi-threaded (or rather, depending on how readers/writers interact)
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to