利用 SGA 共享池,避开 parse 阶段
2015-12-11 15:00
225 查看
同一功能同一性能不同写法
SQL 的影响
如一个 SQL
在 A 程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL
在 ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存
SGA 的原理,可以得出 ORACLE
对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL
的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析
SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE
也可以准确统计 SQL 的执行频率。
不同区域出现的相同的
Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql
代码, 以利用 SGA 共享池, 避开
parse 阶段,防止相同的 Sql
语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过
parse 阶段,提高效率的
办法。
如一个SQL
在 A
程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL
在 ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存
SGA 的原理,可以得出 ORACLE
对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL
的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析
SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE
也可以准确统计 SQL 的执行频率。
不同区域出现的相同的
Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql
代码, 以利用 SGA 共享池, 避开
parse 阶段,防止相同的 Sql
语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过
parse 阶段,提高效率的
办法。
原出处不详
SQL 的影响
如一个 SQL
在 A 程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL
在 ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存
SGA 的原理,可以得出 ORACLE
对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL
的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析
SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE
也可以准确统计 SQL 的执行频率。
不同区域出现的相同的
Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql
代码, 以利用 SGA 共享池, 避开
parse 阶段,防止相同的 Sql
语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过
parse 阶段,提高效率的
办法。
如一个SQL
在 A
程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL
在 ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存
SGA 的原理,可以得出 ORACLE
对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL
的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析
SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE
也可以准确统计 SQL 的执行频率。
不同区域出现的相同的
Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql
代码, 以利用 SGA 共享池, 避开
parse 阶段,防止相同的 Sql
语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过
parse 阶段,提高效率的
办法。
原出处不详
相关文章推荐
- Android获取系统当前日期及将日期转换成对应的星期
- android轮询最佳实践service+AlarmManager+Thread
- jobtracker自身启动与FIFO 调度器的工作过程
- [ActionScript 3.0] AS3 时间格式化方法
- 如何使用ueditor
- 无法使用distinct的时候想想分组group by
- ImageView宽度填满屏幕,高度自适应
- IntelliJ IDEA 常用插件收集
- SpriteKit解坑系列(三):投影Label
- 性能测试分享:MYSQL死锁1
- 读Android群英传第五章
- 织梦CMS调用文章列表时,怎么显示短时间格式
- powershell 汉洛塔
- H5 缓存机制浅析 移动端 Web 加载性能优化
- 在 Android 5.1.1 执行 remount system failed 解决方法
- 将日期控件绑定指定的EditText中,自然显示给定的时间
- 机器学习
- 抽象类
- AIX 配置vncserver
- 【03】json使用