代码之家  ›  专栏  ›  技术社区  ›  Steven

使用Oracle(或任何RDBMS)记录数据

  •  0
  • Steven  · 技术社区  · 15 年前

    在Oracle数据库中,以设定的速率(每分钟、每5秒、每10毫秒等)维护数据日志的“最佳”(正确、标准等)方法是什么?

    为每个数据点存储7字节的日期值似乎效率低下(尤其是随着频率的增加)。但是,将数据打包成某种原始格式会使数据的统计和其他计算变得更加困难。

    我想这个问题足够普遍,可以应用于任何RDBMS,但在本例中,我使用的是Oracle。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Stephen ODonnell    15 年前

    一个兆字节的磁盘需要多少钱,压缩这7个字节真的值得这么做吗?如果您想根据时间计算日志上的统计信息和报告,那么解压缩SQL查询中使用的日期将会非常痛苦。

    使用Oracle时,只需将数据记录到一个表中—尽量不要记录太多或在日志表中有太多索引。确保将日志表从第一天划分为可管理的大小——这可能是每天、每周或每月的一个分区,具体取决于生成的数据量。从第一天开始,也要设计你的家政政策。

    当您在“period”结束时添加一个新分区,当数据开始进入新分区时,您可以考虑使用“alter-partition-move-compress”压缩数据,将其在线存储在更少的空间中。

    有很多选择,你只需要仔细考虑你必须尝试找到最好的解决方案的需求。根据您所做的,登录到一个文件也可能是一个选项-但要注意在一个目录中有成千上万的文件,这也会造成问题。

        2
  •  0
  •   Jonathan Leffler    15 年前

    由于所收集的每一行数据都必须独立存在,因此必须使用空间来记录完整的日期值,除非您选择使用诸如Unix时间戳之类的东西(1970-01-01 00:00:00Z以来的整数秒,或其他合适的时间点或参考点)。它可以容纳4个字节,从而在epoch的任一侧给出68年的周期(假设有符号的32位整数)。它可能不太方便,但比较紧凑。