And double check that you actually VACUUM the db (manually or via auto vacuum).
On Tue, May 28, 2013 at 4:23 PM, Richard Hipp <d...@sqlite.org> wrote: > On Tue, May 28, 2013 at 10:15 AM, Wang, Gao <wan...@gmail.com> wrote: > >> Dear all, >> >> I use sqlite to store, query and perform simple math operations on large >> datasets of small integers -- all values I have in the dataset are -1, 0, 1 >> and 2. These integers are stored as INTEGER (4 byte). I desperately need a >> way to reduce the size of my database because I have dozens of databases >> like this with size ~100G which takes too much of my storage. I'd like some >> other integer type for {-1,0,1,2} such as "SMALLINT" ( >> http://www.sqlite.org/datatype3.html). I understand sqlite data types are >> dynamic and it does not make a difference to create a field of type >> SMALLINT. I wonder if there are something I can do to fulfill my need. >> Anyway to hack into the sqlite.c codes? >> >> > SQLite does not allocate 4 bytes to every integer. It uses a variable > number of bytes (between 1 and 9) depending on the magnitude of the > integer. See http://www.sqlite.org/fileformat2.html#record_format for > additional information. Values of 0 and 1 take 1 bytes. Values of -1 and > 2 take two bytes. > > See also the sqlite3_analyzer.exe utility. Running sqlite3_analyzer.exe on > one of your database files might give you a better idea of where space is > being used. > > -- > D. Richard Hipp > d...@sqlite.org > _______________________________________________ > 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