Oracle共享池簡析

2021-12-30 00:45:12 字數 1029 閱讀 6178

oracle共享池

oracle共享池(share pool)屬於sga,由庫快取記憶體(library cache)和資料字

典快取記憶體(data dictionary cache)組成。

庫快取記憶體  www.2cto.com  

oracle引入庫快取記憶體的目的是共享sql和pl/sql**。

伺服器程序執行sql和pl/sql時,首先會進入庫快取記憶體查詢是否有相同的sql,

如果有,就不再進行後續的編譯處理,直接使用已經編譯的sql和執行計畫。

oracle通過比較兩條sql語句的正文來確定兩條sql是否相同,所以如果想共享sql語句,

必須使用繫結變數的方式。如:

select * from emp where sal > 100和select * from emp where sal > 101是不同的,

而使用繫結變數時,即使v_sal的值不同,oracle認為select * from emp where sal > &v_sal也是相同的。

oracle使用lru佇列和演算法來管理庫快取記憶體,最近使用過的sql會放在隊首,長時間沒有使用的sql放在隊尾,當庫快取記憶體需要記憶體空間而又沒有空閒的記憶體空間時,隊尾記憶體中的sql會被清除,放入最新的sql,並且隊首會指向次段記憶體。

oracle沒有提供直接修改庫快取記憶體大小的方法,只能通過修改共享池的大小來間接修改庫快取記憶體的大小。

www.2cto.com  

資料字典快取記憶體

當oracle執行sql時,會將相關的資料檔案、表、索引、列、使用者、其他的資料物件的定義和許可權資訊存放到資料字典快取記憶體中。在此之後,如果需要相同的相關資料,oracle會從資料字典快取記憶體中提取。

oracle沒有提供直接修改 資料字典快取記憶體大小的方法,只能通過修改共享池的大小來間接修改 資料字典快取記憶體的大小。

修改共享池的大小

1alter system set shared_pool_size = ***m

共享池的大小受限制於sga_max_size引數的大小。  

作者 lijiaming

linux共享記憶體簡析

共享記憶體是ipc的一種機制,允許兩個不相關的程序共享同一塊記憶體 共享記憶體可以雙向通訊,但其本身沒有相應機制,需要程式編寫者設計,本例為單向通訊 分為讀端和寫端 共享記憶體讀端 include include include include include include 自定義資料結構,fla...

Oracle的共享池說明

共享池的主要功能之一,是提供給連線資料的使用者可以快速提取已經存在共享池的資料。就是說,a使用者查詢了某個表中的資料,其資料就會馬上儲存在共享池中,而其他的使用者也按其條件查詢資料,可以快速從共享池中提取,並不用重新在表中提取,提高了資料查詢的速度,十分方便。但是,重點是其他使用者是否真正可以使用到...

C 執行緒池ThreadPool的用法簡析

什麼是執行緒池?為什麼要用執行緒池?怎麼用執行緒池?1.什麼是執行緒池?net framework的threadpool類提供乙個執行緒池,該執行緒池可用於執行任務 傳送工作項 處理非同步 i o 代表其他執行緒等待以及處理計時器。那麼什麼是執行緒池?執行緒池其實就是乙個存放執行緒物件的 池子 po...