签到成功

知道了

CNDBA社区CNDBA社区

12c新特性-Online Statistics Gathering for Bulk-Load

2016-10-08 15:44 3333 0 原创 Oracle 12C
作者: Expect-乐

一个很不错的新特性,12c中支持自动收集批量数据加载的在线统计信息采集功能,这和普通的收集统计功能主要区别就是http://www.cndba.cn/Expect-le/article/286

Oracle并不需要重新扫描一次表来收集数据,而是通过加载数据的过程中,Oracle通过内部的机制就收集好了。省了很

多资源。

1.自动收集的条件

  只有在下面两个方式批量加载数据的时候会自动收集统计信息

http://www.cndba.cn/Expect-le/article/286
http://www.cndba.cn/Expect-le/article/286

CREATE TABLE AS SELECT

INSERT INTO ... SELECT 语句插入数据,而且是使用Direct Path Insert,通过 /*+APPEND */来实现http://www.cndba.cn/Expect-le/article/286

2.好处

  1)自动收集统计信息,不会再去扫描表去收集统计信息

  2)不需要手动去收集统计信息

3.插入数据到一个空的分区表中

  如果roll back了事务,那么Oracle会自动删除之前自动收集的统计信息。http://www.cndba.cn/Expect-le/article/286

 3.1使用INSERT INTO sales SELECT插入方式

  自动收集全部数据,而不会收集分区级别的数据

 3.2使用INSERT INTO sales PARTITION (sales_q4_2000) SELECT插入方式

  自动收集插入那个分区或子分区的统计信息,而不会去收集全局的数据。如果该表启用了INCREMENTAL优先权,http://www.cndba.cn/Expect-le/article/286http://www.cndba.cn/Expect-le/article/286

那么Oracle会收集该分区的概要。

http://www.cndba.cn/Expect-le/article/286
http://www.cndba.cn/Expect-le/article/286

4.批量插入数据,收集索引和直方图统计信息

  可惜这个并不会自动收集索引和直方图统计信息,如果这些数据需要收集,Oracle建议使用DBMS_STATS.GATHER_TABLE_STATS参数设置为GATHER AUTO

  如:EXEC DBMS_STATS.GATHER_TABLE_STATS( user, 'SH_CTAS', options => 'GATHER AUTO' );

  上面的例子只是收集丢失或过期的统计数据。数据库不收集表和批量加载过程中收集基本列统计信息。

5.在线收集统计信息的限制

1)It is not empty, and you perform an INSERT INTO ... SELECT.
2)It is in an Oracle-owned schema such as SYS.
3)It is a nested table.
4)It is an index-organized table (IOT).
5)It is an external table.
6)It is a global temporary table defined as ON COMMIT DELETE ROWS.
7)It has virtual columns.
8)It has a PUBLISH preference set to FALSE.
  /? Bug 16922369 ?/
9)Its statistics are locked.
10)It is partitioned, INCREMENTAL is set to true, and extended syntax is not used.
11)It is loaded using a multitable insert statement.

6.通过hint来决定是否在线收集统计信息

  /*+NO_GATHER_OPTIMIZER_STATISTICS */* 不在线收集统计信息

  /*GATHER_OPTIMIZER_STATISTICS */*  在线收集统计信息

 如:

http://www.cndba.cn/Expect-le/article/286

 CREATE TABLE employees2 AS
  SELECT /*+NO_GATHER_OPTIMIZER_STATISTICS */* FROM employees

12c不仅仅是云的概念,很多小的特性的加入,可能是更实用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1572871次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ