Oracle收集cbo统计信息,Oracle CBO 统计信息的收集与执行计划的选择

--概要

主要总结一下Oracle是如何收集统计信息的是如何选择的,有一些好的Ref可以看看

--基本概念

首先要明确系统的自动收集机制 如果insert update delete truncate发生的数据量变化大于总记录的10%系统就会自动重新统计信息.如果统计信息为null时系统蚕食OPTOMIZER_DYNAMIC_SAMPLING 能够控制如何进行收集. Hint是 /*+ dynamic_sampling (table integer) */ 详见TOP第五章1.3节

以下为收集后用来存储统计信息的视图:

user_tab_statistics --统计之后用来显示表的统计信息 3.1.2

user_tables --查看schames下所有表的统计信息

69c5a8ac3fa60e0848d784a6dd461da6.pngexecdbms_stats.gather_schema_stats(ownname=>user, estimate_percent=>0.5);SELECTtable_name, sample_size, num_rows,round(sample_size/num_rows*100,1)AS"%"FROMuser_tablesWHEREnum_rows>0ORDERBYtable_name;

TABLE_NAME SAMPLE_SIZE NUM_ROWS%------------------------------ ----------- -------- ----------BIG_TABLE12435######5COLOCATED5087984845.2T10011001100

69c5a8ac3fa60e0848d784a6dd461da6.png

user_tab_col_statistics --统计之后用来显示列的统计信息 3.1.3

user_tab_histograms --统计之后用来显示直方图的统计信息 3.1.4

user_ind_statistics --统计之后用来显示索引的统计信息 3.1.5

user_indexes

Oracle的CBO的执行计划选择是基于柱状图(Histogram)的,柱状图用于记录表中的列的分布情况,有了柱状图CBO就可以选择最优的执行计划,否则就需要根据索引的选择性(selectivity)来判断是否使用该索引. 以下是建立测试环境

69c5a8ac3fa60e0848d784a6dd461da6.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值