Oracle的共享池說明

2021-06-18 16:44:09 字數 859 閱讀 2947

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

但是,重點是其他使用者是否真正可以使用到共享池中的資料呢??

現在舉個例:

a使用者,查詢了乙個表 t_dept,語句是:

select * from t_dept where deptno like '1%';

那麼,a使用者所查詢的資料將暫時放在共享池中,提供給其他使用者使用。

當b使用者,也要查詢 t_dept 的資料,他並不一定能獲得共享池中的資料。因為獲得共享池中的資料,條件是非常苛刻的!!

為什麼了?

如果想獲得共享池中a使用者查詢的資料,其他的使用者,他們編寫的查詢語句必須是跟a使用者寫的語句是一模一樣的!

怎麼一模一樣呢?

我們再回看a使用者的語句:

select * from t_dept where deptno like '1%';

那麼我寫成

select * from t_dept where deptno like '1%' order by deptno ; 或者

select * from t_dept where deptno='100';

或者select * from t_dept where deptno like '1%';

結果了?

以上3句查詢,沒有一句是從共享池中取出來的。

因為,想獲得共享池中資料,你必須編寫的**是和原**一模一樣的**。連大小寫都要一樣。**吧??

但不代表共享池是沒有用的東西:

Oracle共享池簡析

oracle共享池 oracle共享池 share pool 屬於sga,由庫快取記憶體 library cache 和資料字 典快取記憶體 data dictionary cache 組成。庫快取記憶體 www.2cto.com oracle引入庫快取記憶體的目的是共享sql和pl sql 伺服器...

共享池 LRU鏈

1 lru鏈 lru鏈存放了sql和sql執行計畫,如果共享池空間比較緊張,一些sql與執行計畫就會被釋放掉。只有recreate型別thunk才會被鏈結到lru鏈上,lru鏈上沒有freeable型別thunk。recreate與freeable型別thunk大都是子堆對應的thunk,子堆裡主要...

redis 共享物件池

當資料為0 9999的整數時 默使用物件池。可以通過 object refcount 檢視物件引用數。127.0.0.1 6379 set intx 5 ok127.0.0.1 6379 object refcount intx 直接使用共享物件池內的整數物件。引用數是2。否則為1。integer ...