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 > -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users