達夢體系結構
- 1 DM8 存儲結構
-
- 1.1 實體存儲結構
-
- 配置檔案
- 控制檔案
- 重做日志檔案
- 資料檔案
- 歸檔日志檔案
- 備份檔案
- 跟蹤日志檔案
- 事件日志檔案
- 1.2 邏輯結構
-
- 頁
- 簇
- 段
- 表空間
- 1.3邏輯結構和實體結構圖
- 2 DM8 記憶體結構
-
- 共享記憶體池
- 運作時記憶體池
- 資料緩沖區
- 重做日志緩沖區
- 字典緩沖區
- sql 緩沖區
- 排序區
- Hash 區
- 3 DM8 線程結構
-
- 監聽線程
- 日志重新整理線程
- 日志歸檔線程
- 日志重做線程
- 排程線程
1 DM8 存儲結構
1.1 實體存儲結構
配置檔案
以.ini 結尾的檔案,查詢視圖 v d m i n i s e l e c t p a r a n a m e , p a r a v a l u e , p a r a t y p e f r o m v dm_ini select para_name,para_value,para_type from v dminiselectparaname,paravalue,paratypefromvdm_ini;
Sys:系統級,影響全局
Session:會話級,隻針對目前會話有效
Read only:隻讀,隻能手動編輯參數檔案
Infile:靜态參數,執行個體重新開機才能生效
修改參數有以下兩種方法:
(1)直接 vi dm.ini ,無論是動态還是靜态參數,都需要重新開機
(2)調用函數 sp_set_para_value(參數類型,’參數名’,參數值) 參數是動态參數不需要重新開機,靜态參數需要重新開機 參數類型是指:靜态參數或者動态參數。1 是動态參數,相當于 both,會改記憶體和參數檔案 中的值,2 是靜态參數,相當于 infile ,隻會更改參數檔案中的值。
(3)console 工具修改參數,無論是動态還是靜态,也都要重新開機資料庫才能生效。
例 1:修改資料庫密碼政策為:長度不小于 9,至少包含一個大寫字母
pwd_policy 動态參數
設定系統預設密碼政策。
0: 無政策;
1: 禁 止與使用者名相同;
2: 密碼長度不小于 9;
4: 至少包含一個大寫字母(A-Z);
8 :至少包含 一個數字(0-9);
16:至少包含一個标點符 号(英文輸入法狀态下,除―和空格外的所有符 号;若為其他數字,則表示配置值的和,如 3=1+2,表示同時啟用第 1 項和第 2 項政策。當COMPATIBLE_MODE=1 時,PWD_POLICY 的實際值均為 0
sp_set_para_value(1,‘pwd_policy’,6);
例 2 修改 dm 資料庫為相容 oracle COMPATIBLE_MODE 靜态參數是否相容其他資料庫模式。
0:不相容,
1:兼 容 SQL92 标準
2:部分相容 ORACLE,
3:部 分相容 MS SQL SERVER,
4:部分相容 MYSQL,
5:相容 DM6,
6:部分相容 TERADATA
sp_set_para_value(2,‘COMPATIBLE_MODE’,2)
控制檔案
以.ctl 結尾的檔案
select para_name,para_value,para_type from v$dm_ini where para_name like ‘%PATH%’;
檢視控制檔案内容: bin下
檢視幫助 [[email protected] bin]$ ./dmctlcvt help
./dmctlcvt TYPE=1 SRC=/dm8/data/DM/dm.ctl DEST=/dm8/dmctl.txt
./dmctlcvt type=2 src=/dm8/dmctl.txt dest=/dm8/data/DM/dm.ctl
注意:不要随便修改控制檔案
重做日志檔案
查詢重做日志檔案:
select file_id,path,rlog_size from v$rlogfile;
重做日志檔案記錄的是資料庫發生變更資訊。重做日志檔案的特點是
可覆寫,循環寫。重做日志檔案頻繁切換會對資料庫産生較大的性能
影響。
resize 重做日志檔案
Alter database resize logfile ‘/dm8/data/DM/DM01.log’ to 300;
Alter database resize logfile ‘/dm8/data/DM/DM02.log’ to 300;
新增重做日志檔案
Alter database add logfile ‘/dm8/data/DM/DM03.log’ size 300;
注意:重做日志檔案不能被删除,所有日志檔案大小需要一緻。
遷移重做日志檔案
alter database mount;
alter database RENAME LOGFILE ‘/dm8/data/DM/DM01.log’ TO ‘/dm8/DM01.LOG’;
alter database open;
資料檔案
以.DBF 結尾的檔案 存放的是真實資料
select file_name,status from dba_data_files;
歸檔日志檔案
就是重做日志檔案的副本,用來做資料庫備份恢複、資料庫守護叢集、dmhs 的同步。
select name,arch_mode from v$database;
備份檔案
以.bak 為擴充名的檔案,備份檔案就是資料庫在某一個時間點的副
本。.meta 中繼資料檔案(備份集的資訊),.bak 資料備份檔案(真實
的資料)
跟蹤日志檔案
跟蹤日志檔案記錄的是系統各會話執行的 sql 語句的資訊,主要是錯
誤的資訊、性能問題。跟蹤日志檔案預設是關閉的。SVR_LOG
事件日志檔案
記錄的是資料庫運作期間産生的關鍵性事件:資料庫的啟動、關閉、
IO 錯誤、記憶體申請失敗
1.2 邏輯結構
頁
預設為 8k,支援 4k、8k、16k、32k。頁是資料庫最小的配置設定和使用單元。頁對應的是
作業系統塊。
頁包含了頁頭資訊、資料、空閑空間、行偏移數組。
頁頭資訊記錄的頁類型、頁位址。行偏移數組,記錄的是空間空間和資料比例(filefactor)
簇
預設為 16 個頁,支援 16、32 個頁。簇是一組連續的頁組成,一個簇總是在一個資料檔案中。
段
是簇的上級邏輯單元,段可以跨多個資料檔案。段又分為資料段(表、索引)、復原段、 臨時段。 dba_segments
表空間
一個資料庫擁有多個表空間,一個表空間可以擁有一個或多個資料檔案,一個資料檔案隻能屬于一個表空間。 dba_tablespaces
1.3邏輯結構和實體結構圖
2 DM8 記憶體結構
共享記憶體池
主要是減少系統調用。共享記憶體池是 dmserver 啟動時,從作業系統申請的一大片記憶體,執行個體在運作中可以向記憶體池申請或釋放記憶體。
SQL> select para_name,para_value from v$dm_ini where para_name like ‘%MEMORY%’;
Memory_target 為 0 表示不限制記憶體使用
運作時記憶體池
給特定子產品單獨使用,例如會話記憶體池,虛拟機記憶體池。
資料緩沖區
參數:buffer
SQL> select para_name,para_value from v$dm_ini where para_name=‘BUFFER’;
參考值:
Oltp:實體記憶體的 40%-60%
OLAP:實體記憶體的 60%-80%
提高資料庫的性能
緩存的是資料頁(空閑、幹淨、髒、正在使用)
資料緩沖區有 4 種類型:
Normal /keep:可以手動調整
Fast/recycle:系統自動管理。Fast 主要是 undo 資料,recycle 主要是臨時資料。
重做日志緩沖區
存放是重做日志資訊,機關是頁,提升資料庫的性能。
select para_name,para_value from v$dm_ini where para_name like ‘RLOG_BUF_SIZE’;
字典緩沖區
主要緩存的是資料字典的資訊,包含表、列的資訊。資料庫存在大量分區表時,應該要調整
字典緩沖區。
sql 緩沖區
用來存放執行計劃,sql 結果集,包。系統中 sql 類别比較多,應該調整 sql 緩沖區。
select para_name,para_value from v$dm_ini where para_name like ‘CACHE_POOL_SIZE’;
排序區
排序區就是 sql 排序需要的記憶體空間,sql 在排序區空間不夠時,轉移到磁盤上(臨時表空間)
Hash 區
是虛拟的記憶體區,隻有在生成 hash 連接配接時,才會生成。
3 DM8 線程結構
監聽線程
檢測來自用戶端的連接配接請求,生成任務,把任務交給工作線程。
IO 線程
将資料頁從磁盤讀入到資料緩沖區中,将資料緩沖區的髒頁在一定機制下(緩沖區滿,執行檢查點,資料庫關閉)刷到磁盤中。
日志重新整理線程
将重做日志緩沖區中的重做記錄在一定機制(事務送出,每 3 秒,執行檢查點)下,刷到重做日志檔案中。
日志歸檔線程
将重做日志檔案在切換時拷貝到歸檔路徑。
日志重做線程
主要是用于資料庫恢複。
排程線程
檢查系統級的時間觸發器;
清理 SQL 緩存、計劃緩存中失效的項,或者超出緩存限制後淘汰不常用的緩存項;
動态緩沖區檢查。根據需要動态擴充或動态收縮系統緩沖池;
自動執行檢查點;
會話逾時檢測;
必要時執行資料更新頁刷盤;
喚醒等待的工作線程