oracle 抽样_深入理解Oracle动态采样

Oracle

动态采样(

Dynamic Sampling

12c

称为

Dynamic statistics)

,是对统计信息的⼀一个重要补充,当数

据动态变化,⽆无法⽤用典型的统计信息描述时,动态采样可以给在解析时对表中数据进⾏行行采样,为优化器器提供

准确的估算值(

cardinality

)。动态采样的主要有以下⼏几个应⽤用场景:

⼀一个经典的场景就是业务场景中的临时表,⽐比如

ETL

数据清洗转换过程中的临时表,⽐比如

BI

系统中存

放计算报表结果的临时表。这些临时表可能是

Oracle

中的

global temporary table

,也可能是正常的堆

表。因为临时表中的数据时动态变化的,不不同时间点,临时表中的数据量量变化很⼤大,没有⼀一种合适的统

计信息使优化器器产⽣生合适的执⾏行行计划。这种场景适合采⽤用动态采样技术,通常会删除临时表上的统计信

息,并且锁定统计信息,不不让搜集统计信息的

Job

更更新临时表上的统计信息,查询临时表时,优化器器会

对临时表进⾏行行动态采样,以确定临时表的

cardinality

另⼀一个场景是在单表上使⽤用组合过滤条件,并且组合过滤条件并不不是简单的相等操作,或者在过滤列列上

使⽤用转换函数,⽆无法使⽤用

column group

扩展统计信息,简单使⽤用多个列列上的统计信息也⽆无法产⽣生合适

的统计信息。

12c

之前,动态采样只能预估单表

cardinality

12c

版本,

Oracle

对动态采样做了了很⼤大的增强,可以估

group by

的聚合结果集和连接结果集的

cardinality

使⽤用动态采样,优化器器往往可以获得⾼高质量量的估算值,从⽽而产⽣生更更优化的执⾏行行计划。本⽂文将介绍三种个动态

采样的适⽤用场景。

⾦金金融⾏行行业客户

CRM

系统的分析语句句执⾏行行时间经常需要

5

分钟以上,通过分析

Top SQL

的执⾏行行计划,发现执⾏行行

计划的估算值偏差离谱,⽐比如下图

SQL Monitor

报告中,对于表

P_CUST_STAT

,优化器器估算值为

1

,实际

值为⼀一千四百万⾏行行。导致后续连接⽅方式为

nested loop

,被驱动表被访问了了⼀一千四百万次。

深⼊入理理解

Oracle

动态采样

动态采样介绍

临时表和动态采样

优化器器动态采样解析

实际案例例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值