- 博客(27)
- 资源 (23)
- 收藏
- 关注
原创 7.2Oracle里并行的控制《基于Oracle的优化(学习笔记)》
Oracle里如何开启并行在Oracle 11R2中,自动并行的开启受参数PARALLEL_DEGREE_POLICY的控制,其默认值为MANUAL,即自动并行在默认情况下并没有被开启。 使用并行Hint/*+ PARALLEL(table,<degree>) */用Hint指定的并行度去访问指定的表,如果Hint没有指定并行度,则用默认的并行度。/*+ NO_...
2018-11-30 14:52:12
340
原创 7.1Oracle里的并行的基本概念《基于Oracle的优化(学习笔记)》
Oracle里能够并行的操作1.并行查询 2.并行DDL 3.并行DMLalter session force parallel dml;alter session enable parallel dml;仅仅修改表的并行度和仅使用并行Hint,都不能真正并行执行DML。 4.并行数据加载。 5.并行备份和恢复 6.并行收集统计信息 ...
2018-11-23 15:43:42
357
原创 6.4常见的Hint《基于Oracle的优化(学习笔记)》
与优化器相关的Hint/*+ ALL_ROWS */它的含义是启用CBO /*+ FIRST_ROWS(n) */优化器启用CBO,而且依据返回头n条的记录的响应时间来决定SQL的执行计划。 注意,first_rows(n)与first_rows_n并不是一一对应的 /*+ RULE */如果目标SQL使用了并行执行,就意味着其中的RULE Hint会失效,...
2018-11-14 16:37:54
334
原创 6.3Hint被Oracle忽略的常见情形《基于Oracle的优化(学习笔记)》
由于各种原因导致Hint被Oracle忽略之后,Oracle并不会给出任何提示或者警告,更不会报错。 情形一:使用的Hint有语法或者拼写错误。 情形二:使用的Hint无效对于非分区索引而言,索引范围扫描或者索引全扫描都不可能并行执行。哈希连接只适用于等值连接条件,不等值的连接条件对哈希而言是没有意义的。 情形三:使用的Hint自相矛盾Oracle只是将自相矛盾...
2018-11-09 14:28:09
301
原创 6.2Hint的用法《基于Oracle的优化(学习笔记)》
Hint的固定格式/*+ <具体的Hint内容> */ Hint指定具体对象时(指定表名或索引名),不能带上该对象的SCHEMA的名称。Hint指定具体表名时,如果该表在SQL文本中有别名(alias),则应该使用别名。 Oracle数据库中Hint生效的范围仅限于它本身所在的Query Block,如果想将Hint生效的范围扩展到它所在的Query Blo...
2018-11-09 09:53:27
277
原创 6.1什么时Hint《基于Oracle的优化(学习笔记)》
什么是Hint,Hint实际上是一种特殊的注释,它一种固定的格式和位置出现SQL语句的文本中,它可以影响优化器对执行计划的选择,但是这种影响并不是强制的,优化器在某些情况下可能会忽略SQL中的Hint,即使这个Hint在语法和语义都是有效的。 Oracle里并不是所有的Hint都是针对优化器的 针对优化器的Hint而言Hint可以影响目标SQL能否被改写Hint可以...
2018-11-07 11:04:00
297
原创 5.12Oracle里的自动统计信息收集《基于Oracle的优化(学习笔记)》
Oracle里自动统计信息收集能够正常运行的前提是STATISTICS_LEVEL的值为TYPICAL或者ALL。Oracle里自动统计信息收集作业会自动收集数据字典统计信息,但不会收集X$系列表的内部对象的统计信息。 oracle11g中自动收集作业为GATHER_STATS_PROG,自动运行任务GATHER_STATS_PROG对应的客户端为“auto optimizer s...
2018-11-06 13:55:16
397
原创 5.9系统统计信息《基于Oracle的优化(学习笔记)》
系统统计信息是用来描述Oracle所在的数据库服务器的系统处理能力的辅助统计信息,主要包括CPU的主频、单块读的平均耗费时间、多块读的平均耗费时间和单次多块读所能读取的数据块的平均值等。 系统统计信息会存储在表AUX_STATS$里。 全表扫描的成本的计算公式:TSC Cost = I/O Cost + CPU Cost其中I/O Cost的计算公式:I/O Cos...
2018-11-05 14:58:26
215
原创 5.8多列统计信息《基于Oracle的优化(学习笔记)》
所谓多列统计信息,就是可以人为指定一组存在关联关系的列为目标表的一个组合列,然后使用dbms_stats对这个组合列收集统计信息,这个组合列的统计信息就是多列统计信息。 ...
2018-11-02 16:13:37
227
原创 5.7动态采样《基于Oracle的优化(学习笔记)》
动态采样有两方面的作用:1.使用动态采样,不管各列是否有关联关系,CBO都可以相对准确地估算出where条件组合的选择率,进而估算出返回结果的cardinality.2.动态采样可以一定程度上缓解临时表没有统计信息而导致CBO选择错误的执行计划的问题。 动态采样适用于针对单表或者多表关联的第一个驱动表的select,update和delete语句...
2018-11-02 15:30:22
267
原创 5.6全局统计信息《基于Oracle的优化(学习笔记)》
Oracle里面的全局统计信息(global statistics)是直接冲对象本身这一级收集统计信息,而不是从下一级对象“推导”或“汇总”出来的统计信息。 当适用DBMS_STATS包的存储过程收集统计信息时,参数granularity用于指定全局统计信息的收集策略。global(表)partition(分区)subpartition(子分区)global and par...
2018-11-02 09:38:10
305
原创 5.4索引的统计信息《基于Oracle的优化(学习笔记)》
索引统计信息的种类和含义索引的统计信息用来描述Oracle数据库里索引的详细信息,它包含索引的层级、叶子块的数量、聚簇因子等典型的维度。这些维度的信息存储在数据字典集表IND$,INDAPRT$,INDCOMPART$,INDSUBPART$通过数据字典DBA_INDEXES,DBA_IND_PARTITIONS,DBA_IND_SUBPARTITIONS来分别查看索引,分区索引和局部...
2018-10-26 14:25:03
235
原创 5.3表的统计信息 《基于Oracle的优化(学习笔记)》
表统计信息的种类和含义 TAB$TABPART$TABSUBPART$DBA_TABLESDBA_TAB_PARTITIONSDBA_TAB_SUBPARTITIONS
2018-10-24 15:33:29
206
原创 5.2 Oracle里收集与查看统计信息的方法 《基于Oracle的优化(学习笔记)》
收集统计信息有两种方法:一是通过analyze命令,一是通过dbms_stats包 使用analyze收集统计信息的方法删除索引的统计信息analyze index index_name delete statistics; 以估算的模式,采样的比例15%收集统计信息analyze table table_name estimate statistics sample ...
2018-10-24 14:26:47
593
原创 5.1 什么是Oracle里的统计信息《基于Oracle的优化(学习笔记)》
它存储在数据字典里面,并且从多个维度描述了Oracle里面的对象的详细信息。 Oracle里面的统计信息有6种类型:表的统计信息。索引的统计信息。列的统计信息。系统的统计信息。数据字典的统计信息。内部对象的统计信息。 ...
2018-10-23 14:47:45
225
原创 3.4 Oracle里的应用类型《基于Oracle的优化(学习笔记)》
Session Cursor的生命周期 应用类型一:不使用绑定变量应用类型二:每次Open,Parse,Bind,Execute,Fetch,Close应用类型三:一次Open + 每次Parse,Bind,Execute,Fetch + 一次Close应用类型四:一次Open,Parse,Bind + 每次Execute,Fetch + 一次Close...
2018-10-12 17:17:16
189
原创 3.3 Oracle里的游标共享《基于Oracle的优化(学习笔记)》
游标共享是指Shared Cursor间的共享,说白了就是重用存储在Child Cursor的解析树和执行计划而不用重新开始硬解析。 常规游标共享Oracle里系统里产生的绑定变量的命名规则:SYS_B_n(n=0,1,2...) Oracle里的常规游标共享是由参数CURSOR_SHARING控制的,其值可以设置为EXACT,SIMILAR,FORCE 自适应游标共享...
2018-10-12 14:34:34
444
原创 3.2 Oracle里的绑定变量《基于Oracle的优化(学习笔记)》
绑定变量是一种特殊的变量(Blind Variable)是一种特殊的变量,又称为占位符。 绑定变量的作用可以有效降低系统硬解析的数量。 绑定变量的典型用法 1.PL/SQL中SELECT语句使用绑定变量的用法在PL/SQL中使用绑定变量的标准语法:execute immediate [带绑定变量的目标SQL] using [对应绑定变量的具体的输入值] ...
2018-10-11 11:43:42
291
原创 2.6 Oracle里执行计划的稳定 《基于Oracle的优化(学习笔记)》
使用SQL Profile来稳定执行计划 Automatic类型的SQL Profile DECLARE my_task_name VARCHAR2 (30); my_sqltext CLOB;BEGIN my_sqltext := 'select /*+ no_index(t1 idx_t1) */ * from t1 where n=1';...
2018-10-09 09:57:26
274
原创 3.1 Oracle里的Cursor《基于Oracle的优化(学习笔记)》
Oracle里的游标分为两种:一种是shared cursor,一种是session cursor. Shared cursor的含义缓存在库缓存中的对象叫库缓存对象(Library Cache Object),所有库缓存对象是以一种库缓存句柄(Library Cache Object Handle)的结构缓存在库缓存中的,Oracle是通过访问缓存对象句柄来访问缓存对象。实际上,...
2018-10-09 09:56:37
853
原创 2.5 Oracle里常见执行计划 《基于Oracle的优化(学习笔记)》
与表访问相关的执行计划全表扫描的关键字是:TABLE ACESS FULLROWID扫描的关键字:TABLE ACESS BY USER ROWID 或 TABLE ACESS BY INDEX ROWID 与B树相关的执行计划索引唯一扫描:INDEX UNIQUE SCAN索引的范围扫描:INDEX RANGE SCAN索引全扫描:INDEX FULL SCAN索...
2018-09-18 14:59:22
304
原创 2.4 如何查看执行计划的执行顺序 《基于Oracle的优化(学习笔记)》
先从开头一直连续往右看,直到看到右边并列的地方;对于不并列的,靠右的先执行;如果看到并列,从上往下看,对于并列的部分,靠上的先执行。 对执行计划顺序格式化的脚本:xplan.sql-- --------------------------------------------------------------------------------------------------...
2018-09-17 14:57:02
1628
原创 2.3 如何得到真实的执行计划 《基于Oracle的优化(学习笔记)》
explain plan命令得到的执行计划可能是不准的当使用set autotrace traceonly explain时,如果执行的select语句,则select语句并没有被Oracle执行,但如果执行的是DML语句就不一样了。 虽然使用部分SET AUTOTRACE命令后目标SQL实际上已经执行过了,但所有使用SET AUTOTRACE(包括SET AUTOTRACE ON,S...
2018-09-17 11:42:39
345
原创 2.2 如何查看执行计划 《基于Oracle的优化(学习笔记)》
在Oracle数据库里面,查看执行计划有如下方法:1.explain plan命令2.DBMS_PLAN包3.SQLPLUS中的autotrace开关4.10046事件5.10053事件6.AWR报告或者Statspack报告7.一些现成的脚本 explain planexplain plan for + 目标SQLselect * from ta...
2018-09-12 17:01:43
277
原创 2.1 什么是执行计划《基于Oracle的SQL优化(学习笔记)》
Oracle用来执行目标SQL的这些步骤的组合就成为执行计划。1.目标SQL的正文,SQL ID和执行计划对应的PLAN HASH VALUE2.执行计划的主体部分3.执行计划的额外补充信息 ...
2018-09-12 10:05:20
385
原创 1.2优化器的基础知识 《基于Oracle的SQL优化(学习笔记)》
优化器的模式优化器的模式是由optimizer_mode来决定的,optimizer_mode可能的值有RULE,CHOOSE,FIRST_ROWS_n(n=1,10,10,1000),FIRST_ROWS,ALL_ROWS 结果集结果集(Row Source)是指包含指定执行结果的集合。一个执行步骤输出的结果集可能就是下一个执行步骤输入的结果集。 访问数据的方法...
2018-09-11 15:28:49
199
原创 《基于Oracle的SQL优化》学习笔记 第一章 oracle里面的优化器 什么是oracle里面的优化器
1.什么是优化器优化器(Optimizer)是Oracle内置的一个核心子系统,你可以把它理解为Oracle中的一个核心模块或者一个核心功能能组件。2.优化器的目的优化器的目的是按照一定判断原则来得到它认为的目标SQL在当前情况下得到最高效的执行路径(acess path),也就是说优化器的目的是为了得到目标SQL的执行计划。3.优化器分类依据选择执行计划时所用的判断原则...
2018-09-06 14:29:59
346
Oracle Database 11g性能优化攻略 (含目录)
2019-03-11
Realtek Semiconductor RTL8111 / 8168B网卡驱动r8168-8.002.00.tar.bz2
2012-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人