pierr wrote:
>
>
> pierr wrote:
>>
>>
>> D. Richard Hipp wrote:
>>>
>>>
>>> On Jun 15, 2009, at 9:04 AM, pierr wrote:
>>>
>>>>
>>>> Hi all,
>>>> I am using an memory type sqlite database in our embedded
>>>> application. After the applicate run a while ,the system will run
>>>> ourt of
>>>> out of memory. So, is there a way to know how many memory is used by
>>>> sqlite?
>>>> That would include the memory for page cache , any other other
>>>> internal
>>>> memory used the sqlite ,as well as the memory for database itself.
>>>> Thanks
>>>> for your help.
>>>
>>> http://www.sqlite.org/c3ref/memory_highwater.html
>>> http://www.sqlite.org/malloc.html
>>>
>>>
>>
>> By using the memory_highwater api above , I found that most of the memory
>> is used for page cache. By limiting the cache size , I can have a good
>> control of how many heap memory will be used.
>>
>> INSERT Record Numbers PAGE SiZE CACHE SIZE HIGH WATER
>> MARK
>> (110bytes per record)
>>
>> 1000 1024 20
>> 98,256
>> 1000 1024 2000
>> 271,040
>> 8000 1024 2000
>> 1,562,144
>> 8000 1024 20
>> 99,200
>>
>> And as Simon suggest ,when I close the connection, the memory used by
>> sqlite will be Zero.
>>
>> I am more clear about how sqlite use memory now , however ,as I am using
>> memory database ,I also cares about the database size. That is what is
>> proportion of database size to the raw data size.
>>
>> I insert a record of 112 bytes 10,1000,and 10000 times repectively and
>> here list the output database size. For The last case ,it has a propotion
>> about 1.45. What cost the extra 0.45 here beside the btree?
>>
>> 10240 2009-06-17 14:38 /etc/eit.flash.sqlite.10
>> 171008 2009-06-17 14:32 /etc/eit.flash.sqlite.1000
>> 1634304 2009-06-17 14:42 /etc/eit.flash.sqlite.10000
>>
>> (I am using the Flash database instead of the memory data here as I think
>> the result should be the same.)
>>
>>
>
>
> I was wrong here.
>
> In my application (Not the test enviroment mentiond above), after the
> sqlite eating up more than 8M bytes in the memory , I dumpded the database
> to the Flash but it is only 360K which is very reasonable for my
> application. The database was configured as cache_szie = 20
> ,page_size=1024 ,so the page cache would not take too much memory ,it
> should be less than 100K according to above measurement.
>
> So, for the non-memory based data base ,the total storage needed is :
> generated database size + memory used by sqlite3 internal.
>
> But for the memory database, the total storage needed will be much bigger
> than that. What will eat the extra buck of memory here? I can think of
> the journey file ,but it should be K level memory..
>
> Thanks for help me out.
>
I made a mistake .
Before insering to the database , I did a query but fogot to finalize the
statement, which ate lots of memory. By add the finalize statement, the
memory comsumption is reasonable now.
--
View this message in context:
http://www.nabble.com/How-to-know-how-many-memory-is-used-by-sqlite-tp24034261p24091514.html
Sent from the SQLite mailing list archive at Nabble.com.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users