Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Oracle(或任何RDBMS)进行数据记录_Oracle_Logging - Fatal编程技术网

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

使用Oracle(或任何RDBMS)进行数据记录,oracle,logging,Oracle,Logging,在Oracle数据库中以设定的速率(每分钟、每5秒、每10毫秒等)维护数据日志的“最佳”(正确、标准等)方法是什么 为每个数据点存储7字节的日期值似乎效率低下(尤其是当频率增加时)。但是,将数据打包成某种类型的原始格式会使数据的统计和其他计算更加困难 我想这个问题足够普遍,可以应用于任何RDBMS,但在本例中,我使用的是Oracle。由于收集的每一行数据都必须独立存在,因此您必须使用空间来记录完整的日期值,除非您选择使用Unix时间戳之类的东西(自1970-01-01 00:00:00Z起的整数

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

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


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

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

一个TB的磁盘需要多少钱,而且压缩这7个字节真的值得吗?如果你想根据时间计算日志的统计数据和报告,那么在SQL查询中解压缩要使用的日期将是非常痛苦的

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

当数据开始进入新的分区时,在“周期”结束时添加一个新的分区,可以考虑使用“ALTER分区移动压缩”来压缩数据,以便在较小的空间中在线存储。


有很多选择,您只需仔细考虑您必须尝试的需求,并找到最佳解决方案。根据您所做的工作,登录到一个文件也可能是一个选择-但要注意,单个目录中成千上万的文件也可能会带来麻烦。

为什么要麻烦呢?这节省的空间很小s、 “不太方便”对我来说,这似乎是一种轻描淡写的说法。现在使用任何SQL日期函数都需要手动转换,并且需要特殊的索引策略。我也不想麻烦,但我不是问这个问题的人,似乎确实关心空间。存储较短的数量可以节省磁盘空间;即使使用TB的磁盘,如果您没有ugh数据输入后,行大小足够小的3字节开销可能会增加。如果记录的信息足够大,3字节的节省可以忽略不计,那么可以使用完整的日期类型。如果有适当的函数,查询不必非常困难。这取决于Oracle提供的内容,我不太相信通过Oracle日期/时间函数的输入和输出给出详细的答案。