- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle程序调优
数据库2程序调优;sql语句:
DDL数据定义语言:create table,create index
DML数据操作语言:insert,update,delete
DCL数据库控制语言:grant,revoke
Pl sql语句( Procedural Language ):
为代码的可执行单元提供了块结构,这种定义良好的 结构使得代码维护变得很容易 提供了如下的过程化结构:
– 变量、常量和类型
– 条件和循环等控制结构
– 定义一次执行多次的可重用程序单元;SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
grant plustrace to test; 授于test用户plustrace 角色权限
Set timi on; 开启语句执行时间显示
Set line 120; 调整行宽为显示120个字符
set autotrace on; ——开启跟踪统计,查看执行计划、统计信息并且返回sql结果集
set autotrace traceonly; ——查看执行计划、统计信息不返回sql结果集:
set autotrace traceonly explain; ——只看执行计划不返回sql结果集:
set autotrace traceonly statistics; ——只看统计信息不返回sql结果集:
Set autotrace off; ——结束统计;逻辑读次数;表扫描方式:
Table access full:全表扫描方式
Index full scan:对索引全扫描方式,一次读取一个索引块,保证有序,用于有排序的场合
index fast full scan:对索引快速全扫描方式,一次读取多个索引块,不保证有序,count、sum
Index full scan (min/max):对索引针对最大最小取值的特别索引扫描方式
index range scan:对索引范围扫描方式,针对索引高度低的特性;触发Recursive Call的情况:
(1)我们做一条insert 时,没有足够的空间来保存row记录,Oracle 通过Recursive Call 来动态的分配空间。
(2)执行DDL语句时,ORACLE总是隐含的发出一些recursive SQL语句,来修改数据字典信息,以便成功的执行该DDL语句。
(3)当Shared Pool过小,data dictionary cache 也会相应的过小,没有足够的空间存储ORACLE的系统数据字典信息时,会发生Recursive calls,这些Recursive calls会将数据字典信息从硬盘读入内存中。
(4)存储过程、触发器内如果有SQL调用的话,也会产生recursive SQL。;Sql优化原则一——绑定变量:; 1、当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法、表名、字段名等相关信息,这过程会花比较长的时间,因为它要分析语句的语法与语义。然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句与对应的执行计划等信息。
2、当用户第二次请求或多次请求时,Oracle会自动找到先前的语句与执行计划,而不会进行Hard parse,而是直接进行Soft parse(把语句对应的执行计划调出,然后执行),从而减少数据库的分析时间。
注意的是:Oracle中只能完全相同的语句,包括大小写、空格、换行都要求一样时,才会重复使用以前的分析结果与执行计划。
绑定变量:
execute immediate insert into t values ( :x ) using i;
静态SQL:
insert into t values (i); ;Oracle的优化器有两种优化方式:
基于规则的优化方式(Rule-Based Optimization,简称为RBO)
基于代价的优化方式(Cost-Based Optimization,简称为CBO)
在Oracle8及以后的版本,Oracle强列推荐用CBO的方式
RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。
CBO方式:它是看语句的代价(Cost),这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、有少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做ana
文档评论(0)