oracle 邏輯結構
1.資料塊(Data Blocks)
資料塊是Oracle最小的儲存單位,Oracle資料存放在“塊”中。一個塊佔用一定的磁碟空間。特別注意的是,這裡的“塊”是Oracle的“資料塊”,不是作業系統的“塊”。
Oracle每次請求資料的時候,都是以塊為單位。也就是說,Oracle每次請求的資料是塊的整數倍。如果Oracle請求的資料量不到一塊,Oracle也會讀取整個塊。所以說,“塊”是Oracle讀寫資料的最小單位或者最基本的單位。
塊的標準大小由初始化引數DB_BLOCK_SIZE指定。具有標準大小的塊稱為標準塊(Standard Block)。塊的大小和標準塊的大小不同的塊叫非標準塊(Nonstandard Block)。
作業系統每次執行I/O的時候,是以作業系統的塊為單位;Oracle每次執行I/O的時候,都是以Oracle的塊為單位。
Oracle資料塊大小一般是作業系統塊的整數倍。
資料塊的格式(Data Block Format)
塊中存放表的資料和索引的資料,無論存放哪種型別的資料,塊的格式都是相同的,塊由塊頭(Common and Variable Header),表目錄(Table Directory),行目錄(Row Directory),空餘空間(Free Space)和行資料(Row Data)五部分組成,如下圖
塊頭(Common and Variable Header):存放塊的基本資訊,如:塊的實體地址,塊所屬的段的型別(是資料段還是索引段)。
表目錄(Table Directory):存放表的資訊,即:如果一些表的資料被存放在這個塊中,那麼,這些表的相關資訊將被存放在“表目錄”中。
行目錄(Row Directory):如果塊中有行資料存在,則,這些行的資訊將被記錄在行目錄中。這些資訊包括行的地址等。
行資料(Row Data):是真正存放表資料和索引資料的地方。這部分空間是已被資料行佔用的空間。
空餘空間(Free Space):空餘空間是一個塊中未使用的區域,這片區域用於新行的插入和已經存在的行的更新。
頭部資訊區(Overhead):我們把塊頭(Common and Variable Header),表目錄(Table Directory),行目錄(Row Directory)這三部分合稱為頭部資訊區(Overhead)。頭部資訊區不存放資料,它存放的整個塊的資訊。頭部資訊區的大小是可變的。一般來說,頭部資訊區的大小介於84位元組(bytes)到107位元組(bytes)之間。
當往資料庫中插入(INSERT)資料的時候,塊中的自由空間會減少;當對塊中已經存在的行進行修改(UPDATE)的時候(使記錄長度增加),塊中的自由空間也會減少。
DELETE語句和UPDATE語句會使塊中的自由空間增加。當使用DELETE語句刪除塊中的記錄或者使用UPDATE語句把列的值更改成一個更小值的時候,Oracle會釋放出一部分自由空間。釋放出的自由空間並不一定是連續的。通常情況下,Oracle不會對塊中不連續的自由空間進行合併。因為合併資料塊中不連續的自由空間會影響資料庫的效能。只有當使用者進行資料插入(INSERT)或者更新(UPDATE)操作,卻找不到連續的自由空間的時候,Oracle才會合併資料塊中不連續的自由空間。
是一組連續的資料塊。當一個表、回滾段或臨時段建立或需要附加空間時,系統總是為之分配一個新的資料區。一個資料區不能跨越多個檔案,因為它包含連續的資料塊。使用區的目的是用來儲存特定資料型別的資料,也是表中資料增長的基本單位。在Oracle資料庫中,分配空間就是以資料區為單位的。一個Oracle物件包含至少一個資料區。設定一個表或索引的儲存引數包含設定它的資料區大小。
是由多個資料區構成的,它是為特定的資料庫物件(如表段、索引段、回滾段、臨時段)分配的一系列資料區。段內包含的資料區可以不連續,並且可以跨越多個檔案。使用段的目的是用來儲存特定物件。
一個Oracle資料庫有4種型別的段:
資料段:資料段也稱為表段,它包含資料並且與表和簇相關。當建立一個表時,系統自動建立一個以該表的名字命名的資料段。
索引段:包含了用於提高系統效能的索引。一旦建立索引,系統自動建立一個以該索引的名字命名的索引段。
回滾段:包含了回滾資訊,並在資料庫恢復期間使用,以便為資料庫提供讀入一致性和回滾未提交的事務,即用來回滾事務的資料空間。當一個事務開始處理時,系統為之分配回滾段,回滾段可以動態建立和撤銷。系統有個預設的回滾段,其管理方式既可以是自動的,也可以是手工的。
臨時段:它是Oracle在執行過程中自行建立的段。當一個SQL語句需要臨時工作區時,由Oracle建立臨時段。一旦語句執行完畢,臨時段的區間便退回給系統。
3.段(Segment)
是由多個資料區構成的,它是為特定的資料庫物件(如表段、索引段、回滾段、臨時段)分配的一系列資料區。段內包含的資料區可以不連續,並且可以跨越多個檔案。使用段的目的是用來儲存特定物件。
一個Oracle資料庫有4種型別的段:
資料段:資料段也稱為表段,它包含資料並且與表和簇相關。當建立一個表時,系統自動建立一個以該表的名字命名的資料段。
索引段:包含了用於提高系統效能的索引。一旦建立索引,系統自動建立一個以該索引的名字命名的索引段。
回滾段:包含了回滾資訊,並在資料庫恢復期間使用,以便為資料庫提供讀入一致性和回滾未提交的事務,即用來回滾事務的資料空間。當一個事務開始處理時,系統為之分配回滾段,回滾段可以動態建立和撤銷。系統有個預設的回滾段,其管理方式既可以是自動的,也可以是手工的。
臨時段:它是Oracle在執行過程中自行建立的段。當一個SQL語句需要臨時工作區時,由Oracle建立臨時段。一旦語句執行完畢,臨時段的區間便退回給系統。
4.表空間(tablespace)
推薦閱讀:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2902067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OCP(41):邏輯結構Oracle
- 3:Oracle體系結構(邏輯結構)Oracle
- PostgreSQL:邏輯結構SQL
- 物理結構和邏輯結構更通俗解釋
- 資料結構知識點--儲存結構與邏輯結構資料結構
- 成為MySQL DBA後,再看ORACLE資料庫(六、邏輯儲存結構)MySqlOracle資料庫
- HBase學習之Hbase的邏輯結構和物理結構
- oracle邏輯讀過程Oracle
- 檔案的邏輯結構、檔案目錄
- Vue原始碼探究-資料繫結邏輯架構Vue原始碼架構
- Go快速入門 03 | 控制結構:if、for、switch 邏輯語句Go
- oracle邏輯備份之--資料泵Oracle
- 工作284:理解繫結邏輯
- 架構-穩定性建設邏輯問題實戰總結架構
- 從巢狀結構中取值時如何編寫兜底邏輯巢狀
- C-04.MySQL邏輯架構MySql架構
- 密碼找回邏輯漏洞總結密碼
- 線上支付邏輯漏洞總結
- 如何搭建文章結構——常見技術文章的邏輯框架框架
- 通過實驗理解PG邏輯結構:1 使用者(角色)
- 賽靈思(Xilinx)BlockRam(Bram)的結構與讀邏輯解釋BloC
- [20190311]關於oracle物理與邏輯壞塊.txtOracle
- 應用程式邏輯錯誤總結
- Oracle之結構Oracle
- Oracle邏輯備份與恢復選項說明Oracle
- 在Oracle中,什麼是物理讀和邏輯讀?Oracle
- 數字邏輯實踐6-> 從數字邏輯到計算機組成 | 邏輯元件總結與注意事項計算機元件
- 【ASK_ORACLE】Oracle Data Guard(三)邏輯備庫的概念和優勢Oracle
- C++ 煉氣期之基本結構語法中的底層邏輯C++
- 達夢資料庫基礎知識(二)資料庫邏輯結構資料庫
- MySQL提升筆記(1):MySQL邏輯架構MySql筆記架構
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- 邏輯題
- 微信小程式學習總結01:專案結構中增加業務邏輯目錄微信小程式
- InnoDB的邏輯儲存結構是什麼,表空間組成包括哪些?
- MySQL調優篇 | 邏輯架構解讀(1)MySql架構
- 《Kafka實戰》之架構和設計邏輯Kafka架構
- 【邏輯DG滾動升級三】ORACLE11204 邏輯DG滾動升級至12C---正式升級Oracle