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

Reply via email to