I have ported the changes of the fix 
http://www.sqlite.org/src/ci/f213e133f6 to my code (with some difficult 
because I have ported directly in my sqlite3.c source).
Anyway I think that the problem still exist, after few test I'll see 
with vmmap mapped file growing up like before the fix.
I think I ported the fix in the right way, and the problem still exist. 
I'll do some other tests.
After this fix did you never see the problem?

Il 09/09/2010 9.46, Michele Pradella ha scritto:
>    ok thank you, today I'm going to port the difference to my source code
> and I'm going to try if the memory it's ok
>
> Il 09/09/2010 9.37, Dan Kennedy ha scritto:
>> 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
>>
>>
>


-- 
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

Reply via email to