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

sri*_*amn 4 sql database sqlite types

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

  1. 101010000- 9 位数字
  2. 01, - 只有 1 或 0
  3. 13.4567- 浮动类型。我只想在这里存储 13.45。

所有数字都将用于程序内的数学运算。我使用这个网站作为参考: http: //www.sqlite.org/datatype3.html

我想知道哪种数据类型亲和力将为我提供最紧凑的数据库。我目前得到的数据库大小接近 40 GB!

谢谢您的帮助。

mvp*_*mvp 6

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

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

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

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