共享池 shared pool

牛平發表於2018-03-29
定義:
共享池( shared pool )是位於SGA中的一塊記憶體區域,主要用於快取SQL的執行計劃。之所以叫共享,是由於該塊記憶體區域可以被多個會話共享同一個執行計劃。即,如果有一個會話執行了SQL之後,會在shared pool 中生成一條該語句的執行計劃,如果第二個會話使用了同樣的或者類似的語句,就可以重複利用該條執行計劃,從而實現執行計劃共享。

特點:
1 共享池是位於SGA中的一塊重要的記憶體區域,因為裡面存放著SQL的執行計劃以及結果還有一些其它型別的檔案,比如控制檔案等。

2  共享池是昂貴的,維護一個共享池所耗費的系統資源是巨大的,如果共享池太大,則會耗費更多的系統資源來維護它,如果太小,則出現不夠用的情況,即本該共享的執行計劃由於共享池太小,導致執行計劃沒有被共享,而是被重複的硬解析(hard parse)從而也會導致CPU資源浪費。

3 共享池類似於系統的快取,是用LRU的策略來進行維護。

4 為了避免記憶體碎片,有著大量的小程式塊。<= 4KB


檢視共享池方法:

select sum(bytes)/1024/1024 mb from v$sgastat where pool = 'shared pool';

配置方法:

通常設定sga_target 後,內部的如shared pool java pool large pool db buffer cache redo log buffer 都會進行動態調整。因此設定sga_target 即可

alter system set sga_target=160m scope = spfile

重啟資料庫生效。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29757574/viewspace-2152407/,如需轉載,請註明出處,否則將追究法律責任。

相關文章