sql - 存储海量数据日期的最佳方式

标签 sql database database-design

我有一个数据记录器,每秒存储传感器的读数,如下表所示:

16:21:53    10.51   19.47   16.89   16.4
16:21:53    4.44    8.03    6.86    6.33
16:21:53    1.99    2.18    2.42    1.28
16:21:54    1.41    0.72    2.39    1.28
16:21:54    1.06    1.85    2.99    2.08
16:21:54    1.04    2.27    3.27    2.29
16:21:56    1       2.46    3.07    2.34
16:21:56    1.13    2.26    3.24    2.07
16:21:56    0.93    2.05    2.84    1.81
16:21:57    0.99    1.88    2.61    1.63
16:21:57    0.85    1.61    2.44    1.35
16:21:57    0.7     1.4     2.26    1.14
16:21:58    0.63    1.27    2.34    0.99

存储所有这些行的日期很不方便,因为它会消耗大量内存空间,存储所有这些行的单个日期值的最佳方法是什么?我的观点是,不要有一个名为 datas 的新列并插入 25/2/2015 为 16:21:53 的行,另一个日期为 16:21:54 的行,依此类推,我想对所有行或任何其他有效的行使用 25/2/2015 1 次这样做的方法与一般数据库设计一样。

最佳答案

在 SQL Server 中,datetime 占用 8 个字节,但如果您不打算在 2079 年之后使用数据记录器,则可以使用仅占用 4 个字节的 smalldatetime

这比尝试用整数存储日期和时间要好,后者通常会导致使用超过 4 个字节,加上令人头疼的问题以及转换带来的 CPU 时间。我不知道其他dbms,但应该有类似的选项。

编辑:

我刚刚检查了 MySql,看起来您可以使用 timestamp 它可以同时保存日期和时间,并且它也存储在 4 个字节中。

在此处阅读有关存储要求和限制的信息:
MySql DateTime Storage Requirements
MySql date and time data types

另一个例子:

在 Oracle 11G 中,推荐的数据类型是date。尽管它是可以存储数据的最小类型,但它仍然需要 7 个字节(timestamp 需要 12 个字节,但可以存储小数秒)。
Oracle Datetime data types

关于sql - 存储海量数据日期的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712830/

相关文章:

Mysql表设计: table roles

database - 视频流网站的最佳数据库是什么?

sql - [在可为空的列或单独的表上使用键/值表的缺点是什么?

mongodb - 建议使用哪个NoSQL DB进行多字段搜索

mysql - 数据库设计 : inventory and sales system?

php - 从 PHP 在 SQL 中生成 MySQL 数据转储

ASP.NET : select multiple values in query using Linq

java - 如何修复 Java ArrayList 中循环中仅重复的最后一个对象

mysql - 如何将 RIGHT LEFT 函数转换为 codeigniter 事件记录

javascript - 如何在刷新时显示来自 PHP 表单的随机文本和图像?