On Aug 13, 2010, at 8:41 PM, Max Vlasov wrote:
> On Fri, Aug 13, 2010 at 1:38 PM, Max Vlasov <[email protected]>
> wrote:
>
>>
>> I can approximately calculate, how big the new database will grow. Is
>>> there a way to tell SQLite to reserve an inital space or numer of
>>> pages
>>> instead of letting the database file grow again and again?
>>>
>>
>>
>> Thought about this recently. Another idea is to tweak VFS. Since
>> xWrite
>> method is supposed to accept iOfst that is bigger than the current
>> file
>> size, one can check whether the new write query is going to
>> allocate new
>> space for the file (vs internal space writing), and before actual
>> call make
>> prior call of the same function writing for example a single zero
>> byte a
>> little far and after that perform the original request.
The fossil tip at present supports the SQLITE_FCNTL_CHUNK_SIZE
argument to sqlite3_file_control(). To allocate space
in 1MB chunks:
void setOneMBChunkSize(sqlite3 *db){
int szChunk = 1024*1024;
sqlite3_file_control(db, "main", SQLITE_FCNTL_CHUNK_SIZE,
(void*)&szChunk);
}
From that point on, connection "db" extends and truncates
the db file in 1MB chunks.
Works on unix and win32.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users