On Sep 9, 2010, at 1:12 PM, Michele Pradella wrote:

>  Hi, do you have some news about the wasted memory? have you found the
> reason for the windows backend?

Fixed here:

   http://www.sqlite.org/src/ci/f213e133f6

Does the problem still show up for you using fossil tip?






> do you think it could be due to the windows implementation of the  
> mmap?
>
> Il 02/09/2010 16.46, Richard Hipp ha scritto:
>> On Thu, Sep 2, 2010 at 9:59 AM, Marcus Grimm<mgr...@medcom- 
>> online.de>wrote:
>>
>>> Michele Pradella wrote:
>>>>   ok, I'll wait for the walk around.
>>>> I always use a BEGIN; COMMIT; transaction but often, after a  
>>>> COMMIT; the
>>>> -wal file does not change in size, it seams it's not checkponted.
>>>> Anyway do you think that with WAL journal mode I should continue  
>>>> to use
>>>> BEGIN; COMMIT; statement? or not?
>>> as Richard mentioned, the wal mode is not intended to work well
>>> for bulk-insert kind of actions. You may try to split your insert
>>> cycles into smaller pieces.
>>>
>>> However, that might not help if you do sql statements which involve
>>> a huge implicit transaction, for example "CREATE INDEX .." on a  
>>> huge table.
>>> At least on windows it can fail with IO error on a GB sized db.
>>>
>> We are working on that problem.  In the meantime, your workaround  
>> is to
>> switch to journal_mode=DELETE before creating large indices.
>>
>>
>>> Btw, I think the wal file doesn't shrink because sqlite doesn't  
>>> truncate
>>> that file after completing the checkpoint. That's by design I guess.
>>>
>> Correct.  The -wal file is deleted when the last connection to the  
>> database
>> is closed.  But prior to that, the WAL file is kept open and is not
>> truncated.  This is a performance optimization.  Most filesystems  
>> are faster
>> at overwriting an existing file than they are at appending to the  
>> end of a
>> file.  (Note the qualifier "Most" in the previous sentence.  There  
>> are
>> exceptions to the rule.  We try to optimize for the common case.)
>>
>>
>>> Marcus
>>>
>>>
>>>
>>>>
>>>> Il 02/09/2010 14.43, Richard Hipp ha scritto:
>>>>> On Thu, Sep 2, 2010 at 8:34 AM, Michele Pradella<
>>> michele.prade...@selea.com
>>>>>> wrote:
>>>>>>   Hi,
>>>>>> I found a strange behavior of the sqlite 3.7.2 with WAL journal  
>>>>>> mode.
>>>>>> Yesterday I found my application DB with a -wal file of 1,5GB  
>>>>>> and a
>>> -shm
>>>>>> file of few MB (about 9MB) with a DB file of 1,2GB: in this
>>>>>> situation I got the process memory wasted by "mapped file" of  
>>>>>> the -shm
>>>>>> file. It seams that the file is mapped a lot of times in memory  
>>>>>> so the
>>>>>> process memory become 2GB and it can't allocate more memory. In  
>>>>>> that
>>>>>> situation operation made on the DB cause I/O disk errors  
>>>>>> probably due
>>> to
>>>>>> the wasted memory.
>>>>>>
>>>>> By coincidence, the SQLite developers were just discussing this  
>>>>> problem
>>>>> earlier this morning.  There are technical issues with windows  
>>>>> that make
>>> a
>>>>> solution difficult.  We are trying to come up with a work- 
>>>>> around.  (The
>>>>> problem you describe is specific to the windows backend and does  
>>>>> not
>>> come up
>>>>> in unix.)
>>>>>
>>>>>
>>>>>> I'm doing some other test to reproduce the problem, but I think  
>>>>>> that
>>>>>> could be when I got a lot of operation between a BEGIN; COMMIT;
>>>>>> So is it ok to use the BEGIN; COMMIT; with the WAL journal  
>>>>>> activated?
>>>>>> is there some kind of limit in the number of operation between  
>>>>>> a BEGIN;
>>>>>> COMMIT; statement?
>>>>>>
>>>>> SQLite will not checkpoint the journal until you commit your
>>> transaction.
>>>>> So if you leave the transaction open too long, the WAL file and  
>>>>> the -shm
>>>>> file will grow excessively large.  WAL works best with many  
>>>>> smaller
>>>>> transactions.  If you have one or two big transactions, then  
>>>>> using a
>>>>> traditional rollback-journal mode works better.
>>>>>
>>>>>
>>>>>
>>>>>> I try to use the PRAGMA wal_checkpoint; to try resolve this  
>>>>>> situation,
>>>>>> but seams that command was ignored by sqlite because the -wal  
>>>>>> file does
>>>>>> not change in size, even the DB file.
>>>>>> _______________________________________________
>>>>>> 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
>>>
>>
>>
>
>
> -- 
> Selea s.r.l.
>
>
>        Michele Pradella R&D
>
>
>        SELEA s.r.l.
>
> Via Aldo Moro 69
> Italy - 46019 Cicognara (MN)
> Tel +39 0375 889091
> Fax +39 0375 889080
> *michele.prade...@selea.com* <mailto:michele.prade...@selea.com>
> *http://www.selea.com*
> _______________________________________________
> 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