我应该将 Unix 时间存储在单独的 Table 中吗
Should I Store Unix Time In A Separate Table
我的应用程序在 discord 中记录状态变化。 (在线、离线、空闲和免打扰)这是使用 discord.py 和 SQL 服务器 (MariaDB) 实现的。
具体来说,如果我每秒收到数百个状态更新(都具有相同的 Unix 时间戳,因为它们发生在彼此的一秒内),我是否应该将每个 Unix 时间戳存储在单独的 table 中每个人都有一个 ID?
我问这个问题是希望在漫长的 运行 中节省磁盘 space。
我的假设是,如果较小的数字以较少的数字存储(指向时间戳的 ID),它将占用较少的 space,因为不需要重复较大的 Unix 时间戳数百次。
您的 post 提出了一些 questions/remarks...
- 您真的需要以秒级的精度存储时间戳吗?以更大的间隔存储意味着更少的 space 使用。
- 您可以使用更小的 int 来存储更接近现在的纪元的时间戳,因此您可以使用更少的 space 整体,而不需要新的 table.
- 您或许应该考虑删除过于频繁发生的事件。如果用户在一分钟内更改状态 10 次,也许不值得将它们全部记录下来?
- 最后,枚举 (smallint) 和时间戳在数据库中并不大。他们通常可以处理数千 GB "just fine"
我的应用程序在 discord 中记录状态变化。 (在线、离线、空闲和免打扰)这是使用 discord.py 和 SQL 服务器 (MariaDB) 实现的。
具体来说,如果我每秒收到数百个状态更新(都具有相同的 Unix 时间戳,因为它们发生在彼此的一秒内),我是否应该将每个 Unix 时间戳存储在单独的 table 中每个人都有一个 ID?
我问这个问题是希望在漫长的 运行 中节省磁盘 space。
我的假设是,如果较小的数字以较少的数字存储(指向时间戳的 ID),它将占用较少的 space,因为不需要重复较大的 Unix 时间戳数百次。
您的 post 提出了一些 questions/remarks...
- 您真的需要以秒级的精度存储时间戳吗?以更大的间隔存储意味着更少的 space 使用。
- 您可以使用更小的 int 来存储更接近现在的纪元的时间戳,因此您可以使用更少的 space 整体,而不需要新的 table.
- 您或许应该考虑删除过于频繁发生的事件。如果用户在一分钟内更改状态 10 次,也许不值得将它们全部记录下来?
- 最后,枚举 (smallint) 和时间戳在数据库中并不大。他们通常可以处理数千 GB "just fine"