马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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%';
查看数据库硬解析和软解析的次数
free空间是由链组成的,不同的链的大小是不一样
当需要空间的时候根据大小到相应的链上寻找空间
如果空间有剩余则把剩下的空间放到相应的链上
如果是有大量的硬解析则会产生大量的脆片,再有大的sql上来时候
就会找不到合适的空间,则会产生ora-4031错误
链(chain)的特点:
1.把内存块串起来。
2.可以进行遍历。
library cache
也是有链组成的,但是不同于free的大小进行管理方式,
library cache是采用sql语句转换后的assic码值经过运算后
产生的数值进行管理的。
library cache的内存块中放着执行计划和SQL语句
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
|