ITPub博客

首页 > 数据库 > Oracle > Shared SQL Areas和Private SQL Areas

Shared SQL Areas和Private SQL Areas

Oracle 作者:xjwang666 时间:2015-04-30 10:05:17 0 删除 编辑
Shared SQL Areas和Private SQL Areas


Oracle 用Shared SQL Areas和Private SQL Areas描述每个SQL语句。当两个用户使用相同SQL语句时,Oracle可以在Shared SQL Areas中识别出来,并且重复利用。但是每个用户必须在Private SQL Areas拥有自己的一份SQL语句拷贝。
Shared SQL area包含了用于执行SQL语句的计划,Shared SQL area为了节省内存,保存一些常用的SQL语句。
当一条SQL语句解析出来时,Oracle从shared area分配内存,分配内存的大小由解析的语句决定。如果所有的shared area已经用完,Oracle会根据LRU逻辑释放足够的内存。再次碰到这些SQL语句,就需要重新解析一次。


1)shared sql area:
当一个sql语句第一次被执行的时候,那么数据库就会使用shared sql area 去处理折条语句,这个区域是共享的,可以被其他用户所访问,其中包含了语句的执行分析树以及执行计划。在这个区域中每个shared sql area为一个唯一的语句存在。(详细内容将在sga和shared pool中进行说明)
2)private sql area
当一个会话执行一个sql语句的时候,这个私有sql area 就会在pga中进行分配了。每个session都会有一个private sql area,如果执行同一个sql那么会指向同一个shared sql area。
eg:我执行了select * from t在一个session中执行20此和在10个不同的session执行同样这条语句,那么会共享同样的sql语句执行计划。但是private area 可能是不能够被共享的,因为其中可能存储的不同的变量值和数据。
其实我们在进行dml以及ddl操作的时候隐含的都是打开cursor,每个游标都作为客户端一边指向服务端的一条指针,每个游标打开都会分配相应的private sql area。因此在应用开发的过程中应该及时释放关闭游标,释放内存占用,以提高内存使用率。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29997949/viewspace-1612893/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle的Move操作
请登录后发表评论 登录
全部评论

注册时间:2014-11-02

  • 博文量
    32
  • 访问量
    118950