Informix入門之 -空間管理
說起資料庫就不能不說資料庫的儲存,說儲存就不能不說資料庫對空間的管理。這裡我們主要談的是IDS對空間的管理的相關問題。
從物理上來說,IDS管理的主要是page,chunk;從邏輯上來說主要是extent,tablespace,dbsapce。連續的page組成extent,多個extent組成tablespace,dbspace用來邏輯的管理chunk,而每個tablespace又是建立在dbsapce上的。
Chunk:一個單位的物理磁碟空間,在9.4版本之前不應許超過2G。一個chunk由path,offset,size三部分組成。因此我們在使用onspaces命令來加chunk的時候這三個引數是必不可少的。理論上一個資料庫伺服器上最多有2048個儲存塊,但是實際上由UNIX核心規定的一個程式所能開啟的檔案數來確定的。如果是使用cooked file來做為儲存,那麼offset可以設定為0,如果使用raw device來做為儲存,那偏移量不能為0,至少第一個CHUNK的offset不能為0。
Page:是一最基本的I/O單位。一個page的大小是由OS來決定的,有2K的,也有4K的。我們拿2K的來舉例說明。一個page有2048個bit,頁頭由24bit組成,頁尾有一個4bit的時間戳,也就是說每一個page剩餘的空間只有2020個bit,另外在每一個page上還有一個槽表,一個槽表4bit,一條記錄對應一個槽表,這樣在每一個page上存放的記錄數就可以定下來。說這些的目的是為了說明在我們建表的時候儘量表不要建的太大,有的表一條記錄的大小就超過了一個page,這樣在讀取的效率上並不是太高。另外還有一個FILLFACTOR的引數決定了資料頁的填充程度,如果此值設定的不是太合理,經常上現節點分裂的情況,那對錶的讀取效率肯定是有影響的。
Extent:是磁碟上連續page的一組集合。在每個extent內的page都是連續的,在表中預設的extent的大小是16K,extent&的大小決定了表中資料存放的集中程度。如果資料存放的過與分散在做磁碟I/O的時間肯定會變長,一般的情況下每個表的extent的大小建議不要超過50,如果太大,就需要做合理的調整。另外不能不提的是在隨著extent數目的增長,每次分出的空間的大小是不不一樣的,在每到16的時候,就翻倍。例如第一個extent是16K,第17個extent就是32K,第33個就是64K了,在翻倍的增長。
Tablespace:是extent的邏輯集合。各個extent在物理上不一定是連續的。
Dbspace:是一組chunk的邏輯集合。一般是把裸裝置的chunk放在一個dbspace中,或者把一組熟檔案放在一組chunk中,也有的把裸裝置和熟檔案放在一組dbspace中,但不建議這麼做。
其實在dbsapce中又有三類,一類就是一般的存放資料的dbsapce,另一類就是tempdbspace,還有一種是blobspace。第一種我就不說了。我們先說blobsapce.
Blobspace:blobspace是一組邏輯組織的chunk,但是是用來儲存byte和text型別的資料。Blobspace中不能存放行或索引,只能存放儲存了blob的頁面和儲存了關於BLOB的系統資訊頁面。因為blobspace中的BLOB頁面的大小是在建立的時候指定的,所有一個blobspace中的所有BLOB頁面大小相同。對BLOB的寫,是沒有在緩衝池中緩衝的,因此BLOB的值不寫邏輯日誌檔案。當修改了BLOB的值之後,應該在磁碟上留出足夠的空間以放BLOB的初始值和修改值。
Tempdbspace:是一組臨時的dbspace。他在DBSPACETEMP引數中指定。需要在onspaces建立的時候加上-t的引數。對tempsaces的操作是不寫邏輯日誌的。在建立臨時表和做group by ,order by,使用join語句,建立index的時候都是需要臨時空間的。一般的情況下所有的tempspace的大小為正常業務資料的10%。如果太小了很大的操作就會出問題。
Select * from tab_a insert into temp tab_b是不寫到tempdbspace的。
Select * from tab_a insert into temp tab_b with no log才寫到tempdbspace。
從物理上來說,IDS管理的主要是page,chunk;從邏輯上來說主要是extent,tablespace,dbsapce。連續的page組成extent,多個extent組成tablespace,dbspace用來邏輯的管理chunk,而每個tablespace又是建立在dbsapce上的。
Chunk:一個單位的物理磁碟空間,在9.4版本之前不應許超過2G。一個chunk由path,offset,size三部分組成。因此我們在使用onspaces命令來加chunk的時候這三個引數是必不可少的。理論上一個資料庫伺服器上最多有2048個儲存塊,但是實際上由UNIX核心規定的一個程式所能開啟的檔案數來確定的。如果是使用cooked file來做為儲存,那麼offset可以設定為0,如果使用raw device來做為儲存,那偏移量不能為0,至少第一個CHUNK的offset不能為0。
Page:是一最基本的I/O單位。一個page的大小是由OS來決定的,有2K的,也有4K的。我們拿2K的來舉例說明。一個page有2048個bit,頁頭由24bit組成,頁尾有一個4bit的時間戳,也就是說每一個page剩餘的空間只有2020個bit,另外在每一個page上還有一個槽表,一個槽表4bit,一條記錄對應一個槽表,這樣在每一個page上存放的記錄數就可以定下來。說這些的目的是為了說明在我們建表的時候儘量表不要建的太大,有的表一條記錄的大小就超過了一個page,這樣在讀取的效率上並不是太高。另外還有一個FILLFACTOR的引數決定了資料頁的填充程度,如果此值設定的不是太合理,經常上現節點分裂的情況,那對錶的讀取效率肯定是有影響的。
Extent:是磁碟上連續page的一組集合。在每個extent內的page都是連續的,在表中預設的extent的大小是16K,extent&的大小決定了表中資料存放的集中程度。如果資料存放的過與分散在做磁碟I/O的時間肯定會變長,一般的情況下每個表的extent的大小建議不要超過50,如果太大,就需要做合理的調整。另外不能不提的是在隨著extent數目的增長,每次分出的空間的大小是不不一樣的,在每到16的時候,就翻倍。例如第一個extent是16K,第17個extent就是32K,第33個就是64K了,在翻倍的增長。
Tablespace:是extent的邏輯集合。各個extent在物理上不一定是連續的。
Dbspace:是一組chunk的邏輯集合。一般是把裸裝置的chunk放在一個dbspace中,或者把一組熟檔案放在一組chunk中,也有的把裸裝置和熟檔案放在一組dbspace中,但不建議這麼做。
其實在dbsapce中又有三類,一類就是一般的存放資料的dbsapce,另一類就是tempdbspace,還有一種是blobspace。第一種我就不說了。我們先說blobsapce.
Blobspace:blobspace是一組邏輯組織的chunk,但是是用來儲存byte和text型別的資料。Blobspace中不能存放行或索引,只能存放儲存了blob的頁面和儲存了關於BLOB的系統資訊頁面。因為blobspace中的BLOB頁面的大小是在建立的時候指定的,所有一個blobspace中的所有BLOB頁面大小相同。對BLOB的寫,是沒有在緩衝池中緩衝的,因此BLOB的值不寫邏輯日誌檔案。當修改了BLOB的值之後,應該在磁碟上留出足夠的空間以放BLOB的初始值和修改值。
Tempdbspace:是一組臨時的dbspace。他在DBSPACETEMP引數中指定。需要在onspaces建立的時候加上-t的引數。對tempsaces的操作是不寫邏輯日誌的。在建立臨時表和做group by ,order by,使用join語句,建立index的時候都是需要臨時空間的。一般的情況下所有的tempspace的大小為正常業務資料的10%。如果太小了很大的操作就會出問題。
Select * from tab_a insert into temp tab_b是不寫到tempdbspace的。
Select * from tab_a insert into temp tab_b with no log才寫到tempdbspace。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24955184/viewspace-772120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- informix資料空間映象操作步驟ORM
- 表空間管理之bigfile表空間設定
- Kubernetes 名稱空間入門
- Linux管理指令碼之清理空間Linux指令碼
- Oracle 本地表空間管理與字典表空間管理Oracle
- OCP課程60:管理Ⅰ之管理資料庫空間資料庫
- 探索ORACLE_之表空間02_管理Oracle
- Informix Dynamic Server 使用者介面工具入門ORMServer
- redis入門指南(四)—— redis如何節省空間Redis
- Oracle表空間操作詳解-入門基礎Oracle
- 將字典管理表空間轉換為本地管理表空間
- Oracle表空間管理Oracle
- Oracle 表空間管理Oracle
- ASM表空間管理ASM
- 關於 informix 中檢視錶所在資料庫空間的問題ORM資料庫
- 管理表空間(表空間的屬性)轉貼
- 遷移SYSTEM表空間為本地管理表空間
- 儲存管理之段收縮、可恢復空間
- 對於PHP中名稱空間概念的入門理解PHP
- Go的棧空間管理Go
- Oracle undo 表空間管理Oracle
- Oracle 表空間的管理Oracle
- oracle undo表空間管理Oracle
- Oracle的表空間管理Oracle
- WindowsServerVersion1709管理之入門篇WindowsServer
- 本地表空間管理優點vs資料字典表空間管理(轉載)
- 乾貨分享|優炫資料庫管理之表空間資料庫
- Oracle OCP(49):表空間管理Oracle
- 【儲存管理】表空間概念
- 表空間查詢和管理
- 有效管理 ASM 磁碟組空間ASM
- oracle表空間日常操作管理Oracle
- oracle本地管理的表空間Oracle
- 淺說Oracle PGA空間管理Oracle
- oracle表空間管理維護Oracle
- oracle 段空間管理問題Oracle
- 大資料匯入之MySql設計之空間換時間的設計變更大資料MySql
- linux記憶體管理--使用者空間和核心空間Linux記憶體