I filed ticket #3452 the other day, worked up a patch.

The patch does three things:

 - Adds a real unixSectorSize() implementation where fstatvfs(2) is
   available.  The host filesystem's f_bsize will be returned instead of
   SQLITE_DEFAULT_SECTOR_SIZE.

 - Changes SQLITE_MAX_DEFAULT_PAGE_SIZE from 8KB to 32KB.

 - Changes the default cache_size from SQLITE_DEFAULT_CACHE_SIZE to
   SQLITE_DEFAULT_CACHE_SIZE * SQLITE_DEFAULT_PAGE_SIZE / pageSize.

The last change was suggested by Kees Nuyt.

Altogether this allows SQLite3 to have a default page size that more
closely matches the preferred block size of the host filesystem without
materially changing the default memory footprint of SQLite3.

Significant performance improvements were noted in Evolution.

I would appreciate a review of this patch by the SQLite3 community.  I'd
be glad to make it apply to the latest in CVS if desired (including
autoconf work, if desired).

See:

http://www.sqlite.org/cvstrac/tktview?tn=3452
http://cr.opensolaris.org/~nico/sqlite3-big-pages/

(FYI, Evolution has/had a separate performance problem in that it opens
a SQLite3 DB handle for the same DB every time you open a mail folder,
whereas it could just re-use an existing open DB handle.)

Nico
-- 
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to