技術日記 150726

2021-07-04 02:51:35 字數 2710 閱讀 5791

上海   晴轉陣雨     37攝氏度

共享池共享池最小的記憶體分配單元是塊(chunk

),chunk

的大小不統一。

4031錯誤: 共享記憶體池不足。

共享池分形結構

共享池最上面一層是堆(heap

),每個堆中,沒劃分成多個大小相關的區(

extent

),麼個區又包含大小不等的

chunk

。chunk

又可以看成乙個子堆,然後包含多個大小相關的區

.....

共享池記憶體分配方式:

1)從top heap

張分配;

2)從子堆中分配

從子堆中分配,如果子堆的區空間已經分配完,則從子堆的父堆的區中分配乙個新的chunk

(第二種方法觸發了第一種方法。)如果

top堆中的所有與區已經分配完畢,而且沒有可以釋放的記憶體,將會報出

ora-4031

錯誤。

子堆的每乙個extent

對應父堆的乙個

chunk。

子堆實際上市乙個虛擬的概念,ds

相當於乙個子堆的說明,它不占用子堆空間,指向子堆的第乙個

chunk

。子堆事實上市乙個雙向鍊錶,他們分布在父堆的不同位置,而且並不一定相連,同時位置順序並不和子堆中

extent

順序相同。

chunk 型別

1)free: 空閒的

chunk

2)perm:永久的

chunk

3)recreatable:可重建的

chunk

4)freeable:

x$ksmsp檢視專門用於記錄共享池堆所有

chunk

的情況。

x$ksmsp:kernal storage memory sga heap

select ksmchcls from x$ksmsp

freeabl 和

recr

用於sql。

共享池lru鍊錶

只有型別為recr

的chunk

,才會放到

lru鏈中。

freelist鍊錶只有

free

的chunk。

chunk的釋放是指將

chunk

一刀freelist

鏈了。

lru鏈中的子堆元素: 子堆包含多個

chunk

,一般在

sql解析執行期間,這幾個

chunk

是同進退,同時可以釋放。因此在

lru鏈中,只選出子堆中的乙個代表加入到

lru鏈,這樣的方式可以顯著減少

lru長度。

而非代表的子堆中的chunk

都是freeable

型別。當

lru鏈中的代表

chunk

被釋放後,

freeable

鏈怎麼辦呢,

oracle

處理很簡單,在

recr

型別chunk

被覆蓋掉,

freeable

型別可能會跟著被覆蓋掉或者型別變為

free

,加到freelist中。

幾乎所有freeable

型別的chunk

都是子堆的一部分,但

recr

不一定是子堆的一部分。

bucket: hash表中的概念,煉表頭

怎樣從free list

分配記憶體。

共享池的free list

找到分配

chunk

,事實上就是在

free list

上找到合適大小的

chunk

,如果找到就分配,找不到從較大

chunk

切割。

這樣會產生碎片,但是oracle

不會合併相鄰的碎片。

解決方法:保留池

共享池中chunk

不斷切割,導致後續

chunk

不斷碎片化,導致最後需要較大

chunk

時, 找不到合適的

chunk

。保留池就是為了較大

chunk

保留的chunk

,保留池中的

chunk

不會被切割。

保留池只有大於等於4400

位元組的chunk

保留池預設大小:shared_pool_reserved_size

預設10%

保留池最小分配大小: _shared_pool_reserved_min_alloc  

預設 4400 

(大於4096

是為了防止

sql解析占用,一把

sql解析會包含多個

chunk

,chunk

最大是4096)

sql: 通過用

sql語句的每個文字字元計算

hash

值的。

x$kglob--[k]ernel [g]eneric [l]ibrary cache manager [ob]ject

note:x$kglpn--[k]ernel [g]eneric [l]ibrary cache manager object [p]i[n]s

hd是handle、控制代碼的意思。

創業日記 微團隊,技術應用思考

創業日記 微團隊,技術應用思考 今天看了dba note fenng 大大寫的 程式語言的選擇並非無關緊要 又看到了cnbeta上面的 facebook 將重寫 php 執行環境 facebook,創立時間2004年2月 和 網差不了多少,從技術應用角度和市值來說,那肯定不是乙個量級上面的。在美國和...

網安學習日記之 PKI技術

通過加密技術和數字簽名保證資訊的安全公鑰加密技術,數字證書,ca,ra機密性,完整性,身份驗證 操作的不可否認性1 ssl https 2 ipsecvpn 3 部分遠端訪問vpn 作用 實現對資訊加密,數字簽名等安全保障 加密演算法 1 對稱加密演算法 加解密的金鑰一致!des 3des aes ...

創業日記 微團隊,技術應用思考

創業日記 微團隊,技術應用思考 今天看了dba note fenng 大大寫的 程式語言的選擇並非無關緊要 又看到了cnbeta上面的 facebook 將重寫 php 執行環境 facebook,創立時間2004年2月 和 網差不了多少,從技術應用角度和市值來說,那肯定不是乙個量級上面的。在美國和...