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

时间:2009-05-19 21:43:17

标签: oracle logging

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

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

我想这个问题足以适用于任何RDBMS,但在这种情况下我使用的是Oracle。

2 个答案:

答案 0 :(得分:2)

对于1 TB的磁盘,它需要多少费用,并且压缩这7个字节真的值得付出努力?如果您想根据时间计算日志的统计信息和报告,那么在SQL查询中使用日期会非常紧张。

使用Oracle只需将数据记录到表中 - 尽量不要记录太多或者在日志表上有太多索引。确保您的日志表从第1天开始分区为可管理的大小 - 可以是每天,每周或每月的分区,具体取决于您生成的数据量。从第1天开始设计您的家政服务。

当您在“期间”结束时添加新分区时,当数据开始进入新分区时,您可以考虑使用“alter partition move compress”来压缩数据,以便在更小的空间内在线存储数据。

有很多选择,您只需要考虑您必须尝试的要求并找到最佳解决方案。根据您的工作情况,也可以选择记录到文件中 - 但要注意单个目录中的成千上万个文件,这也会造成麻烦。

答案 1 :(得分:0)

由于收集的每一行数据必须独立存在,因此必须使用空格来记录完整的DATE值 - 除非您选择使用类似Unix时间戳(自1970-01-01 00以来的整数秒): 00:00Z,或其他一些合适的时期或参考点)。这符合4个字节,在纪元的任一侧给出68年的周期(假设有符号的32位整数)。它可能不太方便,但它相对紧凑。