标题: 硬解析和软解析 [打印本页] 作者: 北京小孩 时间: 2014-8-25 21:11 标题: 硬解析和软解析 shared pool 组成:
free,library cache, row cache
select * from v$sgastat t where t.name like 'lib%';
select * from v$sgastat t where t.pool='shared pool' and t.name='free memory';
select * from v$sgastat t where t.name ='row cache';
---------------------------------------------------------------------------------------
sql语句 先要到library cache中进行查找看sql语句是否存在如果不存在则要进行硬解析:
语法检测,权限检测, 生产执行计划 ,选择执行计划
存在则进行软解析:
语法检测,权限检测
两个的差距在选择执行计划
由于两者都要访问数据字典,所以把数据字典放到内存中
增加访问效率
select name, value from v$sysstat where name like 'parse%';
查看数据库硬解析和软解析的次数
select count(*) from x$ksmsp; 查看有多少个内存块
alter system flush shared_pool; 清空shared_pool
------------------------------------------------------------------------------------------
减少硬解析的数量,就要实现sql的共享。
sql要共享必须完全相同。(空格,字母,大小写)
sql语句在内部进行转换成经过hash算法生成唯一数,如果不一样
转后assic码也不一样,经过hash算法后的数也不一样。
select sql_id, sql_text, executions from v$sql where sql_text like '%%';
查询sqlid
select SQL_FULLTEXT from v$sql where executions=1
order by sql_text; 查询没有共享的SQL