《Oracle 课程-性能优化第8课 分析和动态采样.pdf》由会员分享,可在线阅读,更多相关《Oracle 课程-性能优化第8课 分析和动态采样.pdf(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DATAGURU专业数据分析网站 2012.2012.1111.15 15 性能优化性能优化 第第八八课课-数据分析数据分析2DATAGURU专业数据分析网站2012.11.122012.11.12法律声明法律声明【声明声明】本视频和幻灯片为炼数成金网络课程的教本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济程以外范围散播,违者将可能被追究法律和经济责任。责任。课程详情访问炼数成金培训网站课程详情访问炼数成金培训网站http:/http:/2013-1-12DATAGURU专业数据
2、分析网站2012.2012.1111.1515分析分析-CBO-CBO的数据来源的数据来源 CBO是一个数学模型 需要准确的传入数据 通过精确的数据计算出精确的执行计划2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515分析的最终目的分析的最终目的让让CBOCBO理解数据!理解数据!2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515引子引子-当没有分析数据时当没有分析数据时2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515引子引子-当没有分析数据时当没有分析数据时Cardinalit
3、y=num_of_blocks*(block_size-cache_layer)/avg_row_len2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515引子引子-当分析信息不充足时当分析信息不充足时2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515引子引子-当有足够的分析数据时当有足够的分析数据时2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515CBOCBO的数据来源的数据来源 初始化参数优化参数CPU数据块大小多块读的大小.数据字典user_tables,user_tab_pa
4、rtitionsuser_indexes,user_ind_partitionsuser_tab_col_statistics.2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515DBMS_STATSDBMS_STATS包和包和analyzeanalyze命令命令 analyze命令已经过时无法提供灵活的分析选项无法提供并行的分析无法对分析数据进行管理 DBMS_STATS专门为CBO提供信息来源可以进行数据分析的多种组合可以对分区进行分析可以进行分析数据管理备份,恢复,删除,设置.2013-1-12DATAGURU专业数据分析网站2012.2012.111
5、1.1515OracleOracle的自动信息收集的自动信息收集 Oracle11g的一个默认设置 user_tab_modification跟踪表的修改 当分析对象的数据修改超过10%时,Oracle会重新分析。定时任务GATHER_STATS_JOB负责重新定时收集过旧数据的信息。2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515OracleOracle的自动信息收集的自动信息收集2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515OracleOracle的自动信息收集的自动信息收集2013-1-12DATAGURU
6、专业数据分析网站2012.2012.1111.1515是否要完全依赖自动分析?是否要完全依赖自动分析?当数据执行计划保持不错的时候,可以依赖自动分析。比如,OLTP系统。否则,需要手工介入。比如,OLAP系统没有一个适合所有系统的数据分析方法2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515DBMS_STATSDBMS_STATS包包http:/ VARCHAR2,ownname VARCHAR2,ownname VARCHAR2,ownname VARCHAR2,tabname VARCHAR2,tabname VARCHAR2,tabname VARC
7、HAR2,tabname VARCHAR2,partname VARCHAR2 DEFAULT NULL,partname VARCHAR2 DEFAULT NULL,partname VARCHAR2 DEFAULT NULL,partname VARCHAR2 DEFAULT NULL,estimate_percent NUMBER DEFAULT NULL,estimate_percent NUMBER DEFAULT NULL,estimate_percent NUMBER DEFAULT NULL,estimate_percent NUMBER DEFAULT NULL,block_
8、sample BOOLEAN DEFAULT FALSE,block_sample BOOLEAN DEFAULT FALSE,block_sample BOOLEAN DEFAULT FALSE,block_sample BOOLEAN DEFAULT FALSE,method_opt VARCHAR2 DEFAULT FOR ALL COLUMNS SIZE method_opt VARCHAR2 DEFAULT FOR ALL COLUMNS SIZE method_opt VARCHAR2 DEFAULT FOR ALL COLUMNS SIZE method_opt VARCHAR2
9、 DEFAULT FOR ALL COLUMNS SIZE 1,1,1,1,degree NUMBER DEFAULT NULL,degree NUMBER DEFAULT NULL,degree NUMBER DEFAULT NULL,degree NUMBER DEFAULT NULL,granularity VARCHAR2 DEFAULT DEFAULT,granularity VARCHAR2 DEFAULT DEFAULT,granularity VARCHAR2 DEFAULT DEFAULT,granularity VARCHAR2 DEFAULT DEFAULT,cascad
10、e BOOLEAN DEFAULT FALSE,cascade BOOLEAN DEFAULT FALSE,cascade BOOLEAN DEFAULT FALSE,cascade BOOLEAN DEFAULT FALSE,stattab VARCHAR2 DEFAULT NULL,stattab VARCHAR2 DEFAULT NULL,stattab VARCHAR2 DEFAULT NULL,stattab VARCHAR2 DEFAULT NULL,statid VARCHAR2 DEFAULT NULL,statid VARCHAR2 DEFAULT NULL,statid V
11、ARCHAR2 DEFAULT NULL,statid VARCHAR2 DEFAULT NULL,statown VARCHAR2 DEFAULT NULL,statown VARCHAR2 DEFAULT NULL,statown VARCHAR2 DEFAULT NULL,statown VARCHAR2 DEFAULT NULL,no_invalidate BOOLEAN DEFAULT FALSE);no_invalidate BOOLEAN DEFAULT FALSE);no_invalidate BOOLEAN DEFAULT FALSE);no_invalidate BOOLE
12、AN DEFAULT FALSE);2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515索引数据的收集索引数据的收集DBMS_STATS.GATHER_INDEX_STATS(ownname VARCHAR2,indname VARCHAR2,partname VARCHAR2 DEFAULT NULL,estimate_percent NUMBER DEFAULT to_estimate_percent_type (GET_PARAM(ESTIMATE_PERCENT),stattab VARCHAR2 DEFAULT NULL,statid VARCHA
13、R2 DEFAULT NULL,statown VARCHAR2 DEFAULT NULL,degree NUMBER DEFAULT to_degree_type(get_param(DEGREE),granularity VARCHAR2 DEFAULT GET_PARAM(GRANULARITY),no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (GET_PARAM(NO_INVALIDATE),force BOOLEAN DEFAULT FALSE);2013-1-12DATAGURU专业数据分析网站2012.2012.1111.
14、1515数据分析示例数据分析示例2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515表(索引)分析中几个重要的参数表(索引)分析中几个重要的参数 estimate_percentestimate_percentestimate_percentestimate_percentDBMS_STATS.AUTO_SAMPLE_SIZEDBMS_STATS.AUTO_SAMPLE_SIZEDBMS_STATS.AUTO_SAMPLE_SIZEDBMS_STATS.AUTO_SAMPLE_SIZE手工设置(范围手工设置(范围 0.000001,100 0.000001,
15、100 0.000001,100 0.000001,100)超大表超大表大表大表小表小表2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515gather_table_statsgather_table_stats几个重要的参数几个重要的参数 granularity 数据分析的力度globalpartitionsubpartition2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515全局分析和分区分析全局分析和分区分析2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515全局分析和分区分析
16、全局分析和分区分析使用分区统计信息使用全局统计信息使用全局统计信息2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515全局分析和分区分析全局分析和分区分析 当表上已经有全局统计信息时,单独对分区分析,不会更新全局信息。2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515全局分析和分区分析全局分析和分区分析当表上没有全局统计信息时,单独对分区分析,会更新全局信息(合并分区信息-11g)。2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515全区和全局信息全区和全局信息 增量统计(Oracle
17、11g)Oracle会增量的收集分区信息来更新全局信息2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515分区和全局信息分区和全局信息 结论:如何设置这个参数在一个很大的分区表(OLAP),全局分析代价是非常昂贵的。OLAP系统下,除了新加入的数据外,旧的数据基本上是没有变化的,全局分析很浪费资源。对于很大的分区表,将granulariy设置为partition(Oracle10g)或者incremental(Oracle11g)是很有意义的。对于不大的分区表,可以使用默认设置。2013-1-12DATAGURU专业数据分析网站2012.2012.1111.
18、1515gather_table_statsgather_table_stats几个重要的参数几个重要的参数 method_opt 分析直方图选项2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515直方图直方图 概念-Oracle对列上的数据分布进行统计分析,对数据倾斜分布时很有用。CBO的数据来源表未分析表未分析数据块,默认值,动态采样数据块,默认值,动态采样表已分析(未生成直方图)num_rows,NDV,BLOCKS.?列的相关性表已分析(生成直方图)列上的数据分布2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515
19、直方图直方图Frequency-频率直方图 Height-Balanced-高度平衡直方图2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515直方图示例直方图示例-HEIGHT BALANCED-HEIGHT BALANCED2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515直方图示例直方图示例-FREQUENCY-FREQUENCY2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515直方图示例直方图示例 重回最初的示例。2013-1-12DATAGURU专业数据分析网站2012.20
20、12.1111.1515GATHER_TABLE_STATS.METHOD_OPTGATHER_TABLE_STATS.METHOD_OPT for all columns:for all columns:统计所有列的统计所有列的histograms.histograms.for all indexed columns:for all indexed columns:统计所有统计所有indexedindexed列的列的histograms.histograms.for all hidden columns:for all hidden columns:统计你看不到列的统计你看不到列的histo
21、gramshistograms for columns SIZE|REPEAT|AUTO|SKEWONLY:for columns SIZE|REPEAT|AUTO|SKEWONLY:N的取值范围1,254;REPEAT上次统计过的histograms;AUTO由oracle决定N的大小;SKEWONLY-size skewonly 只收集非均匀分布的直方图,系统自动决定桶数(bucket)2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515DBMS_STATS-Extended StatisticsDBMS_STATS-Extended Statistic
22、s2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515DBMS_STATS-Extended StatisticsDBMS_STATS-Extended Statistics2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515DBMS_STATS-Extended StatisticsDBMS_STATS-Extended Statistics2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515动态采样动态采样 当表上没有分析信息时,Oracle会使用动态采样技术。2013-1-12DA
23、TAGURU专业数据分析网站2012.2012.1111.1515动态采样的级别动态采样的级别 不同的级别,采样的数据块数量不同level1-10,采样数据量逐级递增。level10 对所有数据进行采样分析2013-1-12DATAGURU专业数据分析网站2012.2012.1111.1515动态采样动态采样 V.S.DBMS_STATS V.S.DBMS_STATS 我的观点动态采样只能作为一种辅助手段。对于海量数据,动态采样的数据块太少,无法准确的反映数据的真实情况;如果采样率高,会直接影响SQL的执行效率。DBMS_STATS可以非常灵活的进行数据分析配置分析比例分析时间直方图分析数据的
24、管理.40DATAGURU专业数据分析网站2012.11.122012.11.12炼数成金逆向收费式网络课程炼数成金逆向收费式网络课程DataguruDataguru(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发挥互联
25、网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习成到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习成本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架中国第一的网上知识流转阵地。中国第一的网上知识流转阵地。关于逆向收费式网络的详情,请看我们的培训网站关于逆向收费式网络的详情,请看我们的培训网站 http:/http:/DATAGURU专业数据分析网站ThanksThanksFAQ时间