1. 數據庫由一個或多個表空間組成;
2. 每個表空間由一個或多個數據文件組成;
3. 每個數據文件由一個或多個簇組成;
4. 段是簇的上級邏輯單元,一個段可以跨多個數據文件;
5. 簇由磁盤上連續的頁組成,一個簇總是在一個數據文件中;
6. 頁是數據庫中最小的分配單元,也是數據庫中使用的最小的IO單元。
頁
數據頁也稱爲數據塊,默認8k
頁頭 |
頁類型、頁地址 |
數據
|
存放數據
|
空閒空間 |
空閒空間 |
行偏移數組 |
空間佔用情況 |
FILLFACTOR參數:指定一個數 據頁初始化後插入數據時最大可以使用空間的百分比 (表/索引)。
目的:設置 FILLFACTOR 參數的值,是爲了指定數據頁中的可用空間百分比(FILLFACTOR) 和可擴展空間百分比(100-FILLFACTOR) ,保留一定的空間,以防止在今後的更新操作中增加列或者修改變長列的 長度時,引起數據頁的頻繁分裂 。
簇
簇由同一個數據文件中 16 個(默認)或 32 個連續的數據頁組成 。
頁的默認大小爲8k,簇的默認大小爲8k*16=128k
分配簇:
當創建一個表/索引的時候,DM 爲表/索引的數據段分配至少一個 簇 ,同時數據庫會自動生成對應數量的空閒數據頁,當初始分配的空間用完時DM數據庫會自動擴展。當DM數據庫的表空間爲新的簇分配空閒空間時,首先
1.在表空間按文件從小到大(文件號還是文件大小?)的順序在各數據文件中查找可用的空閒簇進行分配,
2.如果沒有空閒簇,則在各數據文件中查找可用的空閒空間,格式化後分配,
3.如果沒有空閒空間,則擴充數據文件
釋放簇:
數據表空間:在drop對象前,數據段至少有1個簇不會被回收,刪除時也會保留至少1個簇。
drop語句會回收全部簇被其他對象使用
臨時表空間:dm數據庫會自動釋放臨時段,但是臨時表空間所佔磁盤不會減少。SF_RESET_TEMP_TS清理臨時表空間磁盤佔用
回滾表空間:定期檢查
段
段由簇組從,段不一定來自一個數據文件,簇一定來自一個數據文件。與oracle段類似
表空間
1. SYSTEM表空間存放了有關DM數據庫的字典信息,用戶不能在SYSTEM表空間創 建表和索引。
2. ROLL表空間完全由DM數據庫自動維護,用戶無需干預。該表空間用來存放事務運 行過程中執行DML 操作之前的值,從而爲訪問該表的其他用戶提供表數據的讀一致 性視圖。
3. MAIN表空間在初始化庫的時候,就會自動創建一個大小爲128M的數據文件MAIN.DBF。在創建用戶時,如果沒有指定默認表空間,則系統自動指定MAIN 表 空間爲用戶默認的表空間。
4. TEMP表空間完全由DM數據庫自動維護。當用戶的SQL語句需要磁盤空間來完成 某個操作時,DM 數據庫會從TEMP 表空間分配臨時段。如創建索引、無法在內存中 完成的排序操作、SQL 語句中間結果集以及用戶創建的臨時表等都會使用到TEMP 表空間。
5. HMAIN表空間屬於HTS表空間,完全由DM數據庫自動維護,用戶無需干涉。當用 戶在創建HUGE 表時,未指定HTS 表空間的情況下,充當默認HTS 表空間。
表空間總結:
達夢表空間管理與oracle類似
System=system Roll=undo main=users temp=temp hmain=?
sysdba默認表空間爲main(users)
達夢數據庫跟oracle太像了,命令基本都是一模一樣的
再往下看感覺沒啥意思
參考文檔:
《DM7系統管理員手冊》