1.oracle體系結構(筆記)
1.oracle體系結構
Oracle server由例程(instance)和資料庫(database)兩部分組成。
例程(instance)是一組記憶體結構和後臺程式的集會,其記憶體結構主要包括資料快取記憶體,重做日誌緩衝區和共享池3部分,這些記憶體結構總稱為SGA(System Global Area);
後臺程式主要包括SMON,PMON,DBWR,CKPT,LGWR,ARCH等。
資料庫是一組OS檔案的集會,它由資料檔案,控制檔案和重做日誌組成,
SGA(System Global Area)是一組記憶體結構組成,它是由所有使用者程式共享的一塊記憶體區域。啟動例程時,Oracle自動分配SGA;關閉例程時,Oracle自動釋放SGA所佔用的記憶體空間。
SGA主要包括共享池(Shared Pool),資料快取記憶體(database buffer chche)和重做日誌緩衝區(redo log buffer)3個部分。
共享池(shared pool)用於存放最近執行的SQL語句和資料字典資訊,其尺寸由初始化引數SHARED_POOL_SIZE定義。共享池由庫高速緩衝(Library Cache)和資料字典快取記憶體(Dictionary Cache)兩部分組成。
庫快取記憶體(Library Cache)庫快取記憶體由用於存放最近執行的SQL語句資訊,包括SQL語句文字,解析程式碼值及其執行計劃。庫高速緩衝包含許多上下文區(Contest Area),每個上下文區都包含相應的SQL語句的執行計劃,這些上下文區又被稱為共享遊標。當客戶端執行SQL語句時,伺服器程式首先檢查共享遊標是否存在,若存在則按照其執行計劃直接執行語句,若不存在則生成SQL語句執行計劃,並將計劃存放到相應的上下文區中,然後執行改SQL語句。透過共享遊標,可以最小化SQL語句解析次數,從而提高SQL語句的執行效能。
資料字典快取記憶體(Dictionary Cache)用於存放資料字典的資訊,包括表,列的定義以及許可權資訊。庫快取記憶體和資料字典快取記憶體的尺寸是動態變化的,不是固定的!
資料快取記憶體(Database buffer cache)用於存放最近訪問的資料塊資訊,它由許多小緩衝區(快取區尺寸=資料塊尺寸)組成。在 Oracle Database 10g中,使用初始化引數DB_CACHE_SIZE和DB_Nk_CACHE_SIZE(n:2,4,8,16或32)來定義資料快取記憶體的尺寸。按照緩衝區使用的情況,可以將其劃分為髒緩衝區(Dirty Buffer),空閒緩衝區(free buffer),忙緩衝區(pinned buffer)三種。髒緩衝區是指內容和相應的資料塊不一致的緩衝區,當執行DML操作是,伺服器程式會修改緩衝區資料,此時緩衝區和資料塊內容不一致。空閒緩衝區是指內容與資料塊一致或不包含資料的緩衝區,當執行SELECT操作是,緩衝區與資料塊內容一致。忙緩衝區是指伺服器程式正在存取快取區。
重做日誌緩衝區(redo log buffer)用於記載例程變化,其尺寸由初始化引數LOG_BUFFER定義。當執行DDL或DML語句時,伺服器程式首先將事務變化記載到重做日誌緩衝區,然後才會修改資料快取記憶體。重做日誌緩衝區由許多重做記錄(redo record)組成,並且每條重做記錄記載了被修改資料塊的位置以及變化後的資料。
大快取池和java池
SGA除了包含共享池,資料快取記憶體和重做日誌緩衝區之外,還提供了兩個可選的記憶體結構:大緩衝池(large pool)和java池(java pool)。
大緩衝池用於為大記憶體操作提供相對獨立的記憶體空間。透過分配大緩衝池,可以提高這些大記憶體操作的效能。一下情況應分配大緩衝池:
使用共享伺服器
使用RMAN在磁帶裝置商執行備份,轉儲和恢復操作。
執行並行查詢
使用I/O Slaves提高I/O效能(如配置初始化引數dbwr_io_slaves)
Java池用於存放java程式碼,其尺寸由初始化引數JAVA_POOL_SIZE定義。如果要在oracle資料庫中安裝java VM,必須配置java池,並且其尺寸應該大於20M。
PGA(Program Global Area)用於存放伺服器程式的資料和控制資訊,它時獨立於SGA的一塊記憶體區域。當使用者程式連線到Oracel Server
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245212/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle體系結構學習筆記Oracle筆記
- MySQL 讀書筆記 (一) 體系結構MySql筆記
- GO 學習筆記->結構體Go筆記結構體
- Bluespec SystemVerilog(BSV) 及 MIT 體系結構公開課 筆記MIT筆記
- 《計算機體系結構:量化研究方法》讀書筆記計算機筆記
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- JVM讀書筆記之java記憶體結構JVM筆記Java記憶體
- FFmpeg筆記2——2.2結構體分析之AVFormatContext筆記結構體ORMContext
- 資料結構筆記資料結構筆記
- 【Mysql技術內幕筆記--1】--Mysql體系結構和儲存引擎MySql筆記儲存引擎
- 【JVM】堆體系結構及其記憶體調優JVM記憶體
- Solidity語言學習筆記————15、結構體StructSolid筆記結構體Struct
- linux檔案系統的目錄結構筆記Linux筆記
- 記憶體結構記憶體
- Go 筆記之程式結構Go筆記
- 資料結構筆記——概述資料結構筆記
- 資料結構筆記——棧資料結構筆記
- 【PG體系結構】PG體系結構簡單說明
- C語言學習筆記:結構體與指標C語言筆記結構體指標
- Go語言學習筆記 - PART7 - 結構體Go筆記結構體
- BeanFactory體系結構Bean
- MongoDB 體系結構MongoDB
- Servlet 體系結構Servlet
- MySQL 體系結構MySql
- 【JVM體系結構】JVM
- JVM記憶體結構JVM記憶體
- PostgreSQL:記憶體結構SQL記憶體
- 3:Oracle體系結構(邏輯結構)Oracle
- 結構體記憶體對齊結構體記憶體
- [做題筆記] 資料結構筆記資料結構
- 筆記:大話資料結構筆記資料結構
- 資料結構學習筆記資料結構筆記
- 資料結構筆記——佇列資料結構筆記佇列
- 我的 golang 學習筆記系列三:結構體和介面Golang筆記結構體
- iOS學習筆記44 Swift(四)列舉和結構體iOS筆記Swift結構體
- MySQL整體架構與記憶體結構MySql架構記憶體
- PostgreSQL體系結構概述SQL
- HDFS的體系結構
- MySQL 一 體系結構MySql