优化数据库类型以压缩数据库(SQLite)

时间:2012-10-20 23:05:23

标签: sql database types sqlite

我正在努力压缩数据库(SQLite),我正在尝试优化我在架构中分配的数据类型的大小。我的数据可以大致分为3种类型的数字。他们是:

  1. 101010000 - 9位数
  2. 01, - 只需一个或零
  3. 13.4567 - 浮动类型。我想在这里存储13.45。
  4. 所有数字都将用于程序中的数学操作。我使用此网站作为参考:http://www.sqlite.org/datatype3.html

    我想知道哪种数据类型亲和力会给我最紧凑的数据库。我目前的数据库大小接近40 GB!

    感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

在SQLite中,整数数据类型可以占用1,2,4或8个字节,具体取决于数据值的大小。 布尔类型存储为整数0或1,并始终占用1个字节。 REAL(浮点)数据需要8个字节来存储。如果您愿意将数据舍入为2位小数,则可能需要将浮点数乘以100并将其存储为4字节整数值(并且每个值保存4个字节)。 您提到的9个二进制数字应该需要2个字节来存储。

如何优化数据?有很多策略。 如果你有很多布尔字段,你可能可以使用一个字节来存储多达8位。这应该可以使您的存储效率提高8倍。 另一个好的策略是规范化您的数据:将其拆分为多个表。但是,这仅在您的数据模式允许此类拆分时才有效。

通常,如果索引太多,它们可能会显着增加磁盘上数据库的大小。正确的解决方案是修改使用EXPLAIN的软件使用的实际SQL查询,找出不需要的索引并删除它们。

最后,不要忘记使用VACUUM FULL会使数据库占用尽可能小的磁盘空间,但运行它可能需要一段时间并需要独占数据库锁。 祝你好运!