共享池---LRU链

1、LRU链
     LRU链存放了SQL和SQL执行计划,如果共享池空间比较紧张,一些SQL与执行计划就会被释放掉。只有recreate类型thunk才会被链接到LRU链上,LRU链上没有freeable类型thunk。recreate与freeable类型thunk大都是子堆对应的thunk,子堆里主要存放了SQL语句。正在执行的SQL语句的thunk是不会被链到LRU上的,等执行完了会被链到LRU上。

2、LRU链图


    没有把recreate与freeable类型的放在一条链上,这样的设计结构减小了LRU链长度,加快了搜索速度。

    当sql语句被执行以以后会被挂到LRU链上,在LRU链上的thunk必须为recreate类型。如果SQL比较大需要多个thunk,则在其recreate thunk上再挂一个freeable的thunk(如果需要4个thunk就再挂3个freeable的thunk)

3、LRU链上thunk的释放

以下面图为例


      当执行一个SQL语句(需要8k空间),没有可用空间时,oracle要覆盖这个子堆时,会先覆盖掉thunk 0,然后thunk 1。剩下的thunk 2,3会链到freeliist上。
      当执行一个SQL语句(需要24k)时,没有可用空间,oracle会覆盖掉这个子堆,并且再覆盖一个子堆,拿另一个子堆的8k空间,另一个子堆的其他thunk会被挂到freelist上。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值