暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 关于动态统计级别

原创 Asher.HU 2021-02-04
778

动态统计信息是一种优化技术,其中数据库使用递归SQL扫描表中块的随机小样本。

样本扫描估计谓词选择性。使用这些估计,数据库可以为未分析的细分确定更好的默认统计信息,并验证其估计。默认情况下,当优化器统计信息丢失,过时或不足时,动态统计信息将解析期间自动运行递归SQL以扫描表块的少量随机样本。


动态统计级别控制都在数据库云集动态统计和样本,优化程序使用,收集统计数据的大小。

使用OPTIMIZER_DYNAMIC_SAMPLING 初始化参数或语句提示来设置动态统计信息级别

注意:

Oracle Database 12c第1版(12.1)之前的版本中,动态统计信息称为动态采样

下表描述了动态统计信息的级别。请注意以下几点:

  • 如果OPTIMIZER_DYNAMIC_STATISTICSTRUE,并且没有禁用动态统计信息,则当SQL语句使用并行执行时,数据库可以选择使用动态统计信息。
  • 如果OPTIMIZER_ADAPTIVE_STATISTICSTRUE,则当存在相关的SQL计划指令时,优化器将使用动态统计信息。数据库将结果统计信息保存在SQL计划指令存储中,以使其可用于其他查询。

表12-5动态统计级别

水平当优化器使用动态统计信息时样本量(块)

0

不要使用动态统计信息。

不适用

1个

对所有没有统计信息的表使用动态统计信息,但前提是必须满足以下条件:

  • 查询中至少有一个非分区表没有统计信息。
  • 该表没有索引。
  • 该表中的块数多于用于此表的动态统计信息的块数。

32

2

如果语句中至少有一个表没有统计信息,请使用动态统计信息。这是默认值。

64

3

如果满足以下任一条件,请使用动态统计信息:

  • 该语句中至少有一个表没有统计信息。
  • 该语句具有一个或多个WHERE子句谓词中使用的表达式,例如WHERE SUBSTR(CUSTLASTNAME,1,3)

64

4

如果满足以下任一条件,请使用动态统计信息:

  • 该语句中至少有一个表没有统计信息。
  • 该语句具有一个或多个WHERE子句谓词中使用的表达式,例如WHERE SUBSTR(CUSTLASTNAME,1,3)
  • 该语句使用复杂谓词(同一表上多个谓词之间ORAND运算符)。

64

5

标准与第4级相同,但是数据库使用不同的样本量。

128

6

标准与第4级相同,但是数据库使用不同的样本量。

256

7

标准与第4级相同,但是数据库使用不同的样本量。

512

8

标准与第4级相同,但是数据库使用不同的样本量。

1024

9

标准与第4级相同,但是数据库使用不同的样本量。

4086

10

标准与第4级相同,但是数据库使用不同的样本量。

所有块

11

当优化器认为必要时,数据库会自动使用自适应动态采样。

自动确定



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论