Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1117933
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2013-12-02 11:04:40

SQL语句执行过程:
1.ORACLE使用hash算法,为该SQL语句在library cache中分配一个SQL区。
  在SQL区中搜索该语句是否在,存在时查询数字字典,检查权限。
  不存在时,编译、生成分析数。
2.执行SQL语句:
  将分析树放入数据缓冲区,执行读写操作。
3.取数据:
  将数据读入内容。
 
步骤1占60%的时间,优化目标是减少解析时间,实现代码共享。
 
与SQL内存有关的的参数:
shared_pool_size
shared_pool_reserved_size
open_cursors
session_cached_cursors
cursor_space_for_time
cursor_sharing
 
不但需要避免硬解析,也需要减少软解析
 
将频繁使用的实体驻留内存
先执行以下2个脚本:
$ORACLE_HOME/dbms/admin/dbmspool.sql
$ORACLE_HOME/dbms/admin/prvtpool.plb
 
使用dbms_shared_pool.keep ('package_name');将常用的存储过程keep在内存中。
 
select name,kept,type,sharable_mem from v$db_object_cache where owner='LDY';
kept=yes表示对象keep在cache里了。
阅读(716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~