博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle共享池
阅读量:7034 次
发布时间:2019-06-28

本文共 878 字,大约阅读时间需要 2 分钟。

hot3.png

Oracle共享池

Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成。

库高速缓存

Oracle引入库高速缓存的目的是共享SQL和PL/SQL代码。
服务器进程执行SQL和PL/SQL时,首先会进入库高速缓存查找是否有相同的SQL,如果有,就不再进行后续的编译处理,直接使用已经编译的SQL和执行计划。
Oracle通过比较两条SQL语句的正文来确定两条SQL是否相同,所以如果想共享SQL语句,必须使用绑定变量的方式。如:
select * from emp where sal > 100和select * from emp where sal > 101是不同的,而使用绑定变量时,即使v_sal的值不同,Oracle认为select * from emp where sal > &v_sal也是相同的。
Oracle使用LRU队列和算法来管理库高速缓存,最近使用过的SQL会放在队首,长时间没有使用的SQL放在队尾,当库高速缓存需要内存空间而又没有空闲的内存空间时,队尾内存中的SQL会被清除,放入最新的SQL,并且队首会指向次段内存。
Oracle没有提供直接修改库高速缓存大小的方法,只能通过修改共享池的大小来间接修改库高速缓存的大小。

数据字典高速缓存

当Oracle执行SQL时,会将相关的数据文件、表、索引、列、用户、其他的数据对象的定义和权限信息存放到数据字典高速缓存中。在此之后,如果需要相同的相关数据,Oracle会从数据字典高速缓存中提取。
Oracle没有提供直接修改 数据字典高速缓存大小的方法,只能通过修改共享池的大小来间接修改 数据字典高速缓存的大小。

修改共享池的大小

alter system set shared_pool_size = XXXM

共享池的大小受限制于SGA_MAX_SIZE参数的大小。

转载于:https://my.oschina.net/pkpk1234/blog/57246

你可能感兴趣的文章
基于React的Tab组件
查看>>
Mutex
查看>>
关于hook d3d在war3上绘图的几点疑问
查看>>
c#_表单处理方式
查看>>
数据库基本操作
查看>>
Struts UI标签的使用
查看>>
个人项目实验报告——记事本
查看>>
22、(转载)jQueryMobile 知识点总结
查看>>
redis的图形界面管理工具:phpredisadmin
查看>>
CSUFT2016训练赛5
查看>>
[120_移动开发Android]019_android实现地图提示气泡
查看>>
元类编程--__get__ __set__属性描述符
查看>>
C# 基于密码的身份验证报错问题System.Net.NetworkCredential
查看>>
GDUT2017校赛:Problem C: 爬楼梯(DP)
查看>>
Heroku
查看>>
前端多个变量指向同一个对象的问题
查看>>
如何让内存使用效率提高
查看>>
2_分布式计算框架MapReduce
查看>>
Axure学习笔记(一)
查看>>
我最钦佩的人
查看>>