甲骨文大师,
我们现在需要确定设计500列宽的表与设计8列宽但40亿行深的表的最佳方法。该表将每周更新一次,每周日向表中添加一周(过去最近一周)的新数据。
由于数据因周数(财政)而异,我们对上述设计的利弊有两种看法-
对于宽表,其思想是设计一个表,其中包含过去160周内每个星期编号的3个属性列。因此,我们得到的是160 x 3=480列宽。我们的想法是,每周将上周的数据添加到表中时,我们将从表中删除最旧的周列,并将最新的周列添加到表中。根据ColA-ColD上定义的键,此表中大约有4000万行(请参考下图)。下面是一个例子-
对于深表,ColA ColD字段保持不变,只是有一个新的周列,该列根据ColA ColD上定义的键而有所不同。当我们构建这个表时,我们的想法是只将最近的一周粘贴到具有适当周数的表中,并使用单独的清除(维护)过程从表中删除最旧的周行。此表将有大约40亿行和8列宽。这是一个样本-
我们完全理解按周数对任意一个表进行分区的必要性,无论我们选择哪个表。
该表的使用-并发用户将多次查询该表,以获取过去52周的匹配周数和ColA值,并期望在不到5分钟的时间内从中创建一个报告。
我在这里寻求Oracle专家的建议,根据您的经验,在我们向表中构建数据的过程中,您是否看到过一个表有近500列的宽度,每周都会删除或添加列,以及它如何影响高度并发的报告生成工具的性能。相反,如果您使用的表深度高达40亿行(但列不会每周更改),那么使用此表的并发报告过程的性能影响是什么。
谢谢你,非常感谢你抽出时间!!
布伦顿