天天看點

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

達夢體系結構

  • 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 dmi​niselectparan​ame,parav​alue,parat​ypefromvdm_ini;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

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%’;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

檢視控制檔案内容: 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;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

重做日志檔案記錄的是資料庫發生變更資訊。重做日志檔案的特點是

可覆寫,循環寫。重做日志檔案頻繁切換會對資料庫産生較大的性能

影響。

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;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

歸檔日志檔案

就是重做日志檔案的副本,用來做資料庫備份恢複、資料庫守護叢集、dmhs 的同步。

select name,arch_mode from v$database;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

備份檔案

以.bak 為擴充名的檔案,備份檔案就是資料庫在某一個時間點的副

本。.meta 中繼資料檔案(備份集的資訊),.bak 資料備份檔案(真實

的資料)

跟蹤日志檔案

跟蹤日志檔案記錄的是系統各會話執行的 sql 語句的資訊,主要是錯

誤的資訊、性能問題。跟蹤日志檔案預設是關閉的。SVR_LOG

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

事件日志檔案

記錄的是資料庫運作期間産生的關鍵性事件:資料庫的啟動、關閉、

IO 錯誤、記憶體申請失敗

1.2 邏輯結構

預設為 8k,支援 4k、8k、16k、32k。頁是資料庫最小的配置設定和使用單元。頁對應的是

作業系統塊。

頁包含了頁頭資訊、資料、空閑空間、行偏移數組。

頁頭資訊記錄的頁類型、頁位址。行偏移數組,記錄的是空間空間和資料比例(filefactor)

預設為 16 個頁,支援 16、32 個頁。簇是一組連續的頁組成,一個簇總是在一個資料檔案中。

是簇的上級邏輯單元,段可以跨多個資料檔案。段又分為資料段(表、索引)、復原段、 臨時段。 dba_segments

表空間

一個資料庫擁有多個表空間,一個表空間可以擁有一個或多個資料檔案,一個資料檔案隻能屬于一個表空間。 dba_tablespaces

1.3邏輯結構和實體結構圖

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

2 DM8 記憶體結構

共享記憶體池

主要是減少系統調用。共享記憶體池是 dmserver 啟動時,從作業系統申請的一大片記憶體,執行個體在運作中可以向記憶體池申請或釋放記憶體。

SQL> select para_name,para_value from v$dm_ini where para_name like ‘%MEMORY%’;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

Memory_target 為 0 表示不限制記憶體使用

運作時記憶體池

給特定子產品單獨使用,例如會話記憶體池,虛拟機記憶體池。

資料緩沖區

參數:buffer

SQL> select para_name,para_value from v$dm_ini where para_name=‘BUFFER’;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

參考值:

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’;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

字典緩沖區

主要緩存的是資料字典的資訊,包含表、列的資訊。資料庫存在大量分區表時,應該要調整

字典緩沖區。

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

sql 緩沖區

用來存放執行計劃,sql 結果集,包。系統中 sql 類别比較多,應該調整 sql 緩沖區。

select para_name,para_value from v$dm_ini where para_name like ‘CACHE_POOL_SIZE’;

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

排序區

排序區就是 sql 排序需要的記憶體空間,sql 在排序區空間不夠時,轉移到磁盤上(臨時表空間)

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

Hash 區

是虛拟的記憶體區,隻有在生成 hash 連接配接時,才會生成。

達夢體系結構(DM8)_yxy1 DM8 存儲結構2 DM8 記憶體結構3 DM8 線程結構

3 DM8 線程結構

監聽線程

檢測來自用戶端的連接配接請求,生成任務,把任務交給工作線程。

IO 線程

将資料頁從磁盤讀入到資料緩沖區中,将資料緩沖區的髒頁在一定機制下(緩沖區滿,執行檢查點,資料庫關閉)刷到磁盤中。

日志重新整理線程

将重做日志緩沖區中的重做記錄在一定機制(事務送出,每 3 秒,執行檢查點)下,刷到重做日志檔案中。

日志歸檔線程

将重做日志檔案在切換時拷貝到歸檔路徑。

日志重做線程

主要是用于資料庫恢複。

排程線程

檢查系統級的時間觸發器;

清理 SQL 緩存、計劃緩存中失效的項,或者超出緩存限制後淘汰不常用的緩存項;

動态緩沖區檢查。根據需要動态擴充或動态收縮系統緩沖池;

自動執行檢查點;

會話逾時檢測;

必要時執行資料更新頁刷盤;

喚醒等待的工作線程