我正致力于压缩数据库(SQLite),并试图优化我在模式中分配的数据类型的大小。我所拥有的数据大致可以分为三种类型的数字。它们是:
101010000 -9位数0或1,-只有1或013.4567 -浮动类型。我想在这里只存13.45英镑。所有的数字都将用于程序中的数学操作。我使用这个网站作为参考:http://www.sqlite.org/datatype3.html
我想知道哪种数据类型关联将给我提供最紧凑的数据库。我目前的数据库大小接近40 GB!
谢谢你的帮助。
发布于 2012-10-21 03:41:24
在SQLite中,整数数据类型可以占用1、2、4或8个字节,这取决于数据值的大小。布尔类型存储为整数0或1,并且始终占用1字节。实际(浮点)数据需要8个字节来存储。如果您愿意将数据舍入2位小数,您可能需要将浮点数乘以100,并将其存储为4字节整数值(并保存每个值4个字节)。您提到的9位二进制数字需要2字节才能存储。
如何优化数据?有很多策略。如果您有大量的布尔字段,您可能可以使用一个字节来存储多达8位。这将使您的存储效率提高8倍。另一个好策略是将数据规范化:将其拆分为多个表。但是,只有当您的数据架构允许这样的拆分时,这才有效。
通常,如果您有太多的索引,它们可能会显著增加磁盘上数据库的大小。正确的解决方案是修改软件使用的实际SQL查询,使用EXPLAIN,找出不需要的索引并删除。
最后,不要忘记,使用真空满将使数据库在磁盘上占据尽可能小的空间,但是运行它可能需要一段时间,并且需要独占数据库锁。祝好运!
https://stackoverflow.com/questions/12993462
复制相似问题