database buffer cache之我見
database buffer cache 透過db_cache_size和SGA_target來控制。
預設值:
If SGA_TARGET is set: If the parameter is not specified, then the default is 0 (internally determined by the Oracle Database). If the parameter is specified, then the user-specified value indicates a minimum value for the memory pool. If SGA_TARGET is not set, then the default is either 48 MB or 4 MB * number of CPUs, whichever is greater
如果sga_target被設定:
db_cache_szie是0,即資料庫自動管理;db_cache_size非0,則就是database_buffer_cache的最小值
如果sga_target沒被設定:
預設是48M或者是4M*cpu的數量,以較高的為準
資料庫透過LRU演算法控制db buffer cache的資料訪問:
buffer touch counts
資料庫會透過使用touch counts計算lru list中各資料緩衝訪問的頻繁度,這個機制確保當某個buffer被繫結的時候增加一個計數器,而不是不停地重新整理lru list中的快取。
當某個buffer被鎖定,資料庫會判斷什麼時候這個buffer的touch counts在最近是否增長了,如果3秒以前計數器增長了,那麼計數器增加,否則就保持原樣,三秒規則在計數很多touch的時候可以阻止pins的爆發增長,比如一個會話插入了幾行資料,但資料庫會認為這是一個touch。
如果一個buffer在lru的冷端,而touch count是高的,那麼就會被該buffer就會被挪到熱端,如果touch count是低的,那麼就會被移出db buffer cache。
Every buffer has an access mode: pinned or free (unpinned). A buffer is "pinned" in the cache so that it does not age out of memory while a user session accesses it. Multiple sessions cannot modify a pinned buffer at the same time.
每個buffer都有一個訪問模式:pinned或者是free。pinned的目的是為了防止使用者會話訪問時被移除記憶體,多個會話不能同時修改被pinned的buffer。
預設值:
If SGA_TARGET is set: If the parameter is not specified, then the default is 0 (internally determined by the Oracle Database). If the parameter is specified, then the user-specified value indicates a minimum value for the memory pool. If SGA_TARGET is not set, then the default is either 48 MB or 4 MB * number of CPUs, whichever is greater
如果sga_target被設定:
db_cache_szie是0,即資料庫自動管理;db_cache_size非0,則就是database_buffer_cache的最小值
如果sga_target沒被設定:
預設是48M或者是4M*cpu的數量,以較高的為準
資料庫透過LRU演算法控制db buffer cache的資料訪問:
buffer touch counts
資料庫會透過使用touch counts計算lru list中各資料緩衝訪問的頻繁度,這個機制確保當某個buffer被繫結的時候增加一個計數器,而不是不停地重新整理lru list中的快取。
當某個buffer被鎖定,資料庫會判斷什麼時候這個buffer的touch counts在最近是否增長了,如果3秒以前計數器增長了,那麼計數器增加,否則就保持原樣,三秒規則在計數很多touch的時候可以阻止pins的爆發增長,比如一個會話插入了幾行資料,但資料庫會認為這是一個touch。
如果一個buffer在lru的冷端,而touch count是高的,那麼就會被該buffer就會被挪到熱端,如果touch count是低的,那麼就會被移出db buffer cache。
Every buffer has an access mode: pinned or free (unpinned). A buffer is "pinned" in the cache so that it does not age out of memory while a user session accesses it. Multiple sessions cannot modify a pinned buffer at the same time.
每個buffer都有一個訪問模式:pinned或者是free。pinned的目的是為了防止使用者會話訪問時被移除記憶體,多個會話不能同時修改被pinned的buffer。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-2121785/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle database buffer cacheOracleDatabase
- Database Buffer Cache (79)Database
- Organization of the Database Buffer Cache (80)Database
- Size of the Database Buffer Cache (82)Database
- IO之核心buffer----"buffer cache"
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- Buffer Cache 原理
- cache buffer chainAI
- How To Identify a Hot Block Within The Database Buffer Cache. [ID 163424.1]IDEBloCDatabase
- Buffer Cache Hit Ratio
- Oracle Buffer Cache原理Oracle
- CACHE BUFFER CHAINSAI
- oracle buffer cache管理機制之lruw_dbwrOracle
- page cache與buffer cache的關係
- Oracle Cache Buffer ChainsOracleAI
- linux cache and buffer【轉】Linux
- Latch: cache buffer chains (%)AI
- BUFFER CACHE尋找流程
- buffer cache logical structure!Struct
- buffer cache部分原理(LRU)
- oracle buffer cache管理機制_buffer cache dump與lru機制小記Oracle
- 33、buffer_cache_3(redo的產生、LRBA、buffer cache裡的等待事件)事件
- buffer與cache的區別
- buffer cache基本知識點
- BUFFER CACHE 基礎知識
- [Oracle Script] Buffer Cache Hit RatioOracle
- 等待模擬-cache buffer chainAI
- Buffer cache的執行原理
- Buffer和Cache的區別
- Buffer 與 Cache 的區別
- Cache Buffer Chain Latch等待事件AI事件
- Cache 和 Buffer的區別
- why Buffer Cache Hit Ratio < 0
- OCP知識點講解 之 什麼是Buffer Cache?
- buffer cache實驗5-latch:cache buffers chainAI
- 【Cache】將常用的“小表”快取到Buffer Cache快取
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- Angular 之我見Angular