1 DB Cache 是以bock爲單位組織的緩衝區,不一樣大小的BLOCK對應不一樣的緩衝區參數
2 DB Cache的命中率越高,訪問性能就越好
3 Cache中的數據塊經過散列算法實現
4 每一個鏈上的buffers數量,最佳的狀況是每一個鏈上只有一個buffer
5 DBWR進程控制髒數據寫入
6 在DB Cache,同一個數據塊中可能存在多個版本的數據
7 大表的掃描,熱塊衝突均可能致使閂鎖的爭用
引入tch計數器,避免LRU鏈上頻繁移動
LRU鏈上搜索達到最大深、LRU-W上沒有足夠的clean buffers都會觸發標記位,使得DBWR進程講髒數據寫入磁盤
幾個重要的數據鏈:
1 LRU list普通的LRU鏈
2 LRU-AUX list 被確認的clean的鏈,包括DBWR已經寫回文件的 數據塊和乾淨快
3 LRU-XO list 重用對象鏈
4 LRU-XR list CKPT搜索這些BUFFER,將髒數據寫入該鏈,再由DBWR寫入磁盤
閂鎖爭用:
1 熱塊衝突
2 數據庫在某個時間段出現大量的數據塊掃描、熱鏈
使用keep pool存放大表,能夠下降物理讀,改善cache命中率
使用owi觀點和時間模型分析,幫助分析數據庫性能
DB cache命中率低,意味着更多的物理IO、更多的閂鎖使用、較低的效率。RAC中,更多的實例間通訊消息
DB cache調優,注意 free buffere waits \ writes complete waits兩個性能指標
SGA包括:
1 數據結構部分 fixed size
2 數據塊緩衝區 database buffers
3 redo log緩衝區 redo buffers
4 共享池 variable size
永久使用的共享內存:進程信息數據、會話信息數據、特殊用途的內存段
隨着共享池碎片化加重:產生ORA-4031錯誤
1 加大初始的分配值
2 每次擴展一個組
共享池內部結構:
1 PERMANENT
2 FREEABLE
3 RECERATEABLE
4 FREEABLE WITH MARK
經過內部視圖 X$KSMSP監控共享池碎片的狀況
較大的共享池會帶來必定的系統開銷
共享池閂鎖競爭也會增長
按期刷新共享池會有助於保持共享池性能的穩定
共享池相關閂鎖的平均等待時間、超時的次數---判斷共享池碎片化程度
遊標:一個父遊標,多個子遊標
用戶的不一樣,經過一個SQL獲得的結果就不一樣,所以不能共享;執行計劃不一樣,也不能夠共享
硬解析:執行SQL時,SQL已經再也不共享池中,會產生硬解析。首先分配共享池空間,建立父遊標,建立子游標
軟軟解析:父遊標存在,子游標也存在
軟解析:父遊標存在,子游標不可共享
遊標共享技術ACS
遊標不會立刻關閉,會先放在遊標緩存中,等待回話完成後,在關閉
OPEN_CURSORS會話打開的遊標數量
SESSION_CACHED_CURSORS回話緩衝,主要功能:將會話中的經常使用的SQL放入UGA中的會話緩衝區中,以便下次調用
CURSOR_SPACE_FOR_TIME 當父遊標被打開的時候,全部子游標及其相關聯的對象所有被鎖住,從而確保遊標相關的信息都是一致的