You can implement your own database cache which will respect overall limit on memory usage.
Pavel On Fri, Oct 23, 2009 at 11:06 AM, Doug <pa...@poweradmin.com> wrote: > I'm trying to figure out how to limit SQLite's memory usage while still > giving it as much memory as I can. > > The app has about 50-60 separate database handles to 50-60 separate database > files. Each handle is only used by a single thread at a time, and most are > always accessed by the thread that created the handle. > > When each handle is created, I execute: > PRAGMA temp_store=1 { can't tell from the docs if this needs to be executed > on each handle or not } > PRAGMA page_size=4096 > PRAGMA cache_size= { either 2000 or 6000 depending on the database file > being opened } > > So in theory, my cache usage could be anywhere from 50 * 4KB * 2000 = > 400,000 KB to 60 * 4KB * 6000 = 1,440,000 KB. > > The 1.4 Gig'ish number is too large for the process to handle - I need to > limit it to about 1GB. > > Currently I'm calling sqlite3_soft_heap_limit(1024 * 1024 * 1024) with the > hope that if memory needs to be allocated there should be plenty > (60*6000=360,000) of pages that sqlite3_release_memory could release and > thus the soft limit would hold. Apparently I'm wrong though - > sqlite3_memory_used is reporting 1,266,186 KB. > > Is there a better way to go about it? I can limit the cache_size value, but > I'd like to optimize and use as much memory, up to the limit, as I can. > Shared cache seems like it might be an option, but there are enough caveats > and considerations that I don't feel I understand it well enough to risk it. > > I'm open to any suggestions. > > Thanks > > > _______________________________________________ > 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