国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

SharedPool原理

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 12:00:04
文檔

SharedPool原理

SharedPool原理:Shared pool和PGA都是由一個(gè)Oracle的內(nèi)存管理器來(lái)管理,我們稱之為KGH heap manager。Heap Manager不是一個(gè)進(jìn)程,而是一串代碼。 由于shared pool中最重要的是library cache,所以本文主要講解Library cache的結(jié)構(gòu),library cach
推薦度:
導(dǎo)讀SharedPool原理:Shared pool和PGA都是由一個(gè)Oracle的內(nèi)存管理器來(lái)管理,我們稱之為KGH heap manager。Heap Manager不是一個(gè)進(jìn)程,而是一串代碼。 由于shared pool中最重要的是library cache,所以本文主要講解Library cache的結(jié)構(gòu),library cach

Shared pool和PGA都是由一個(gè)Oracle的內(nèi)存管理器來(lái)管理,我們稱之為KGH heap manager。Heap Manager不是一個(gè)進(jìn)程,而是一串代碼。

由于shared pool中最重要的是library cache,所以本文主要講解Library cache的結(jié)構(gòu),library cache latch,library cache lock,library cache pin。

What is shared pool?

Shared pool是SGA中的一部分,由于它是SGA的一部分,這意味著它可以被所有的進(jìn)程所訪問(wèn),Shared Pool當(dāng)中主要包含了2部分:library cache和

dictionary cache 也稱為 row cache。

Library cache包含了共享SQL區(qū)(shared SQL areas),私有SQL區(qū)(private SQLareas,如果配置了共享服務(wù)器),PL/SQL存儲(chǔ)過(guò)程以及包,還有一些控制信息,比如說(shuō)locks以及l(fā)ibrary cache handles。

Dictionary cache包含了表,視圖的依賴信息,比如表結(jié)構(gòu),它的用戶,Oracle在解析SQL的時(shí)候就會(huì)頻繁的訪問(wèn)dictionary cache。

How is it managed?

Shared pool和PGA都是由一個(gè)Oracle的內(nèi)存管理器來(lái)管理,我們稱之為KGH heap manager。Heap Manager不是一個(gè)進(jìn)程,而是一串代碼。Heap Manager主要目的就是滿足server 進(jìn)程請(qǐng)求memory 的時(shí)候分配內(nèi)存或者釋放內(nèi)存。Heap Manager在管理PGA的時(shí)候,Heap Manager需要和操作系統(tǒng)來(lái)打交道來(lái)分配或者回收內(nèi)存。但是呢,在shared pool中,內(nèi)存是預(yù)先分配的,Heap Manager管理所有的空閑內(nèi)存。當(dāng)某個(gè)進(jìn)程需要分配shared pool的內(nèi)存的時(shí)候,Heap Manager就滿足該請(qǐng)求,Heap Manager也和其他ORACLE模塊一起工作來(lái)回收shared pool的空閑內(nèi)存。

Library Cache Manager

Library cache Manager 可以看做是Heap Manager的客戶端,因?yàn)閘ibrary cache manager是根據(jù)Heap Manager來(lái)分配內(nèi)存從而存放library cache objects。Library cache Manager控制所有的library cache object,包括package/procedure, cursor, trigger等等。

Hash Table and Hash Bucket

Library cache是由一個(gè)hash table組成,這個(gè)hash table又由hash bucket組成的數(shù)組構(gòu)成,每個(gè)hash bucket又是由一些相互指向的library cache handle所組成,library cache object handle就指向具體的library cache object以及一些引用列表。

Library Cache結(jié)構(gòu)示意圖如下:

Library Cache handle

我們對(duì)Library cache中所有對(duì)象的訪問(wèn)是通過(guò)利用library cache handle來(lái)實(shí)現(xiàn)的,也就是說(shuō)我們想要訪問(wèn)library cache object,我們必須先找到library cache handle。Library cache handle指向library cache object,它包含了library object的名字,命名空間,時(shí)間戳,引用列表,lock對(duì)象以及pin對(duì)象的列表信息等等。Library cache handle也被library cache用來(lái)記錄哪個(gè)用戶在這個(gè)這個(gè)handle上有l(wèi)ock,或者是哪個(gè)用戶正在等待獲得這個(gè)lock。那么這里我們也知道了library cache lock是發(fā)生在handle上的。

當(dāng)一個(gè)進(jìn)程請(qǐng)求library cache object, library cache manager就會(huì)應(yīng)用一個(gè)hash 算法,從而得到一個(gè)hash 值,根據(jù)相應(yīng)的hash值到相應(yīng)的hash bucket中去尋找。這里的hash算法原理與buffer cache中快速定位block的原理是一樣的。如果library cache object在內(nèi)存中,那么這個(gè)library cache handle就會(huì)被找到。有時(shí)候,當(dāng)shared pool不夠大,library cache handle會(huì)保留在內(nèi)存中,然而library cache heap由于內(nèi)存不足被age out,這個(gè)時(shí)候我們請(qǐng)求的object heap就會(huì)被重載。最壞的情況下,library cache handle在內(nèi)存中沒(méi)有找到,這個(gè)時(shí)候就必須分配一個(gè)新的library cache handle,同時(shí)object heap也會(huì)被加載到內(nèi)存中。

Library Cache Object

Library Cache Object是由一些獨(dú)立的heap所組成,,前面說(shuō)了Library cache handle指向Library cache Object,其實(shí)handle是指向第一個(gè)heap,這個(gè)heap 我們就稱之為heap 0。Heap 0記錄了指向其他heap的指針信息。

根據(jù)上面描述,Library cache中的的Library cache object結(jié)構(gòu)示意圖可以用上圖來(lái)表示(本圖摘自DSI405)

Library cache lock/pin

Library cache lock/pin是用來(lái)控制對(duì)library cache object的并發(fā)訪問(wèn)的。Lock管理并發(fā),pin管理一致性,lock是針對(duì)于library cache handle,而pin是針對(duì)于heap。

當(dāng)我們想要訪問(wèn)某個(gè)library cache object,我們首先要獲得這個(gè)指向這個(gè)object的handle的lock,獲得這個(gè)lock之后我們就需要pin住指向這個(gè)object的heap。

當(dāng)我們對(duì)包,存儲(chǔ)過(guò)程,函數(shù),視圖進(jìn)行編譯的時(shí)候,Oracle就會(huì)在這些對(duì)象的handle上面首先獲得一個(gè)library cache lock,然后再在這些對(duì)象的heap上獲得pin,這樣就能保證在編譯的時(shí)候其它進(jìn)程不會(huì)來(lái)更改這些對(duì)象的定義,或者將對(duì)象刪除。

當(dāng)一個(gè)session對(duì)SQL語(yǔ)句進(jìn)行硬解析的時(shí)候,這個(gè)session就必須獲得library cache lock,這樣其他session就不能夠訪問(wèn)或者更改這個(gè)SQL所引用的對(duì)象。如果這個(gè)等待事件花了很長(zhǎng)時(shí)間,通常表明共享池太小(由于共享池太小,需要搜索free的chunk,或者將某些可以被移出的object page out,這樣要花很長(zhǎng)時(shí)間),當(dāng)然了,也有可能另外的session正在對(duì)object進(jìn)行修改(比如split 分區(qū)),而當(dāng)前session需要引用那個(gè)table,那么這種情況下我們必須等另外的session進(jìn)行完畢。

Library Cache lock有3中模式:

的時(shí)候獲得

修改一個(gè)library cache object的時(shí)候獲得

用來(lái)確保對(duì)象依賴性

linux

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

SharedPool原理

SharedPool原理:Shared pool和PGA都是由一個(gè)Oracle的內(nèi)存管理器來(lái)管理,我們稱之為KGH heap manager。Heap Manager不是一個(gè)進(jìn)程,而是一串代碼。 由于shared pool中最重要的是library cache,所以本文主要講解Library cache的結(jié)構(gòu),library cach
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产一区二区三区在线视频 | 国产高清不卡码一区二区三区 | 国产在线精彩视频 | 伊人精品久久久大香线蕉99 | 激情欧美在线 | 国产精品亚洲色图 | 久久艹精品| 免费在线观看国产 | 欧美成人一区二区三区在线视频 | 正在播放国产一区 | 伊人婷婷 | 亚洲国产精品一区二区久久 | 人善交另类欧美重口另类 | 精品一区 二区三区免费毛片 | 免费一级 一片一毛片 | 免费看真人a一级毛片 | 日韩第四页 | 欧美日韩精品一区二区三区高清视频 | 欧美日韩精品乱国产538 | 91亚洲欧美综合高清在线 | 国产精品免费视频网站 | 精品伊人久久久 | 国产精品每日更新在线观看 | 高清精品一区二区三区一区 | 国产原创91| 国产精品制服诱惑 | 在线观看免费国产视频 | 亚洲色图另类 | 日韩在线第二页 | 一区不卡在线观看 | 欧美色另类 | 亚洲欧美日本另类激情 | 久久2 | 欧美日韩精品在线 | a级网站| 最新国产在线观看 | 国产成人99久久亚洲综合精品 | 日韩欧美亚洲国产高清在线 | 亚洲一级二级 | 欧美一区二区在线 | 亚洲一级二级 |