【问题标题】:Table load via Partition Exchange (Oracle 10g)通过分区交换 (Oracle 10g) 加载表
【发布时间】:2008-10-03 17:12:11
【问题描述】:

我有一些关于优化此类负载的问题。

构建一个新的数据表以加载到分区表中,然后在这个新表上构建索引。

  1. 应该使用 COMPUTE STATISTICS 选项构建索引还是使用 DBMS_Stats 的 Cascade 选项?

  2. 您应该在交换前收集表上的统计信息,还是交换后收集分区上的统计信息?

  3. 如果你在交换之后做,并且你在参数列表中指定分区名称,粒度参数有什么相互作用?例如,如果我指定一个分区名称,然后将粒度设置为“全局和分区”,这是否会全局?它只做那个分区吗?

【问题讨论】:

    标签: oracle statistics oracle10g partitioning


    【解决方案1】:

    您应该使用 COMPUTE STATISTICS 选项构建索引还是使用 DBMS_Stats 的 Cascade 选项?

    如果这是一个数据仓库,那么首先考虑根本不收集统计数据,并使用动态抽样。其次,如果您确实收集了统计信息,那么一定要对索引使用计算统计信息。

    您应该在交换之前收集表上的统计信息,还是在交换之后收集分区上的统计信息?

    在交换之前收集新数据表的统计信息以获取有关新数据的分区统计信息 -- 之后收集分区表的统计信息以收集表统计信息

    如果你在swap之后做,并且你在参数列表中指定了分区名称,粒度参数有什么相互作用?例如,如果我指定一个分区名称,然后将粒度设置为“全局和分区”,那是否会全局?它只做一个分区吗?

    见上文。

    说真的,不要给统计和动态采样机会。

    【讨论】:

    • 这是一个报表。每天实现一次的复杂查询。是DW吗?可能不会,可能有一点。这是关于动态采样的一个非常好的技巧,我必须尝试一下。而关于表和分区的部分有点倾斜。有道理。
    【解决方案2】:
    1. DBMS_STATS 被认为是计算此版本统计信息的正确方法。使用COMPUTE STATISTICS 构建索引是可行的,但通常您希望一次计算所有统计数据并拍摄快照。

    2. 您想在交换后收集统计数据。这样,优化器将对使用该分区的数据执行查询做出最佳猜测。

    3. 为什么要同时放两个?

    【讨论】:

    • 你为什么要把这两个都放?表和分区统计信息?因为它们是独立使用的,两者都是必要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2012-02-11
    • 1970-01-01
    相关资源
    最近更新 更多