分区交换后Oracle收集统计信息

时间:2017-02-19 19:16:48

标签: oracle12c

数据库:Oracle 12c

我有一个从Fact Table中选择数据的流程,对其进行汇总并将其推送到Summary Table。

汇总表是Range Partitioned(交易日期)和List Partitioned(文件ID)。

进程从Fact表中获取数据(其中file_id =<>所有交易日期),在临时表中汇总它并使用Partition Exchange将数据从Temp表移动到Summary Table中的SubPartition之一(因为该过程适用于文件ID级别。)

摘要表每天都会完全刷新(100%的数据将被交换)。

在子分区级别交换数据之前,统计信息将与数据一起收集和交换。

在完成该过程后,我们在分区级别(在for循环中为每个分区)运行dbms_gather_table_stats,其粒度设置为" approx_global和partition"。

即使我们在全球级别收集统计信息,摘要表的user_tab_statistics也有" STALE_STATS"这个表是= YES,但是,分区&可以使用子分区统计信息。

当我们对摘要表运行查询时(日期范围为3年),查询会旋转很长时间 - 将CPU加速到90%,但永远不会返回任何数据。

我检查了查询的解释计划,基数显示为1.

我读到了有关增量统计数据的信息,但是如果一些分区发生变化,似乎增量也会起作用 - 在我的情况下,它可能不是最好的选择,其中所有分区的数据都会完全改变。

我正在寻找一种策略来收集汇总表的统计数据 - 不想运行完整的统计数据。

感谢。

0 个答案:

没有答案
相关问题