天天看點

DM達夢資料庫體系結構詳解

1、DM邏輯結構

dm中和oracle一樣,也分為執行個體和資料庫兩個概念,而且這兩者的概念也基本一緻。

唯一的差別是:達夢是單程序,而oracle是多程序的。

  • 執行個體:共享記憶體+背景的程序或線程。
  • 資料庫:存放到磁盤的檔案。

一般是一個db對應一個執行個體,但是DSC(DM共享叢集)多個執行個體對一個資料庫。

dm的伺服器組成:

用戶端+伺服器(執行個體+資料庫)

用戶端不能直接去通路資料庫,用戶端把請求交給執行個體,執行個體去通路資料庫,把通路資訊,傳回執行個體,執行個體交給交給用戶端。

DM達夢資料庫體系結構詳解

dm的邏輯存儲結構:

  • 資料庫由一個或多個表空間組成。
  • 每個表空間由一個或多個資料檔案組成。
  • 每個資料檔案由一個或多個簇組成。
  • 頁是資料庫中最小的配置設定機關,也是資料庫中使用的最小的IO單元。

2、DM實體結構

DM 資料庫使用了磁盤上大量的實體存儲結構來儲存和管理使用者資料。主要包括:

2.1、配置檔案

配置檔案是 DM 資料庫用來設定功能選項的一些文本檔案的集合,配置檔案以 ini 為擴充名,如dm.ini, dmarch.ini

2.2、控制檔案

每個 DM 資料庫都有一個名為 dm.ctl 的控制檔案。控制檔案是一個二進制檔案,它記錄了資料庫必要的初始資訊。

2.3、資料檔案

資料檔案以 dbf 為擴充名,它是資料庫中最重要的檔案類型,一個 DM 資料檔案對應磁 盤上的一個實體檔案,資料檔案是真實資料存儲的地方,每個資料庫至少有一個與之相關的 資料檔案。在實際應用中,通常有多個資料檔案。

2.4、重做日志檔案

重做日志檔案又叫redo日志。主要用于資料庫的備份和恢複。

2.5、歸檔檔案

利用歸檔日志,系統可被恢複至故障發生的前一刻,也可以還原到指定的時間點,如果沒有歸檔日志檔案,則隻能利用備份進行恢複。

2.6、邏輯日志檔案

如果在DM資料庫上配置了複制功能,複制源就會産生邏輯日志檔案。

2.7、備份檔案

備份檔案以 bak 為擴充名

2.8、日志檔案(跟蹤日志,事件日志)

使用者在 dm.ini 中配置 SVR_LOG 和 SVR_LOG_SWITCH_COUNT 參數後就會打開跟蹤日志。

DM 資料庫系統在運作過程中,會在 log 子目錄下産生一個“dm_執行個體名_日期”命名的 事件日志檔案。事件日志檔案對 DM 資料庫運作時的關鍵事件進行記錄,如系統啟動、關閉、記憶體申請失敗、IO錯誤等一些緻命錯誤。

3、DM記憶體結構

DM 資料庫管理系統的記憶體結構主要包括記憶體池、緩沖區、排序區、哈希區等。根據系統中子子產品的不同功能,對記憶體進行了上述劃分,并采用了不同的管理模式。

3.1、共享記憶體

檢視共享記憶體大小:

DM達夢資料庫體系結構詳解

其中0 表示的是不限制,在oracle中:memoroy_target=sga+pga

Memory_pool 表示系統記憶體池大小,檢視方法:

DM達夢資料庫體系結構詳解

3.2、資料緩沖區buffer

DM達夢資料庫體系結構詳解

1、存放的内容:LRU(最小使用算法)連結清單。

2、狀态:free,dirty,clean,pending.

3、如何去設定buffer的大小?

DM達夢資料庫體系結構詳解
DM達夢資料庫體系結構詳解

建議:

OLTP: BUFFER大小設定為整個實體記憶體的40-60%

OLAP:BUFFER大小設定為整個實體記憶體的60-80%

如何修改:

ORALCE: alter system set xxx=…;

DM:SP_set_PARA_VALUE(SCOPE,PARA_NAME,PARA_VALUE);

我們可以通過V P A R A M E T E R 和 V PARAMETER 和V PARAMETER和VDM_INI視圖去檢視相關參數的值,例如:

DM達夢資料庫體系結構詳解

當然并不是所有的參數都可以通過這種方式修改,dm的參數分為以下幾類:

  • Sys/session 動态參數,同時修改記憶體和配置檔案
  • Read only 資料庫運作狀态下,不能修改。
  • In file 靜态參數,修改配置檔案。

其中參數2表示隻修改配置檔案,1表示修改配置檔案和記憶體。

另外需要注意的是,在oracle中Recycle(快速回收池)和Keep(保留池)存放的是表,而在DM中存放的是表空間。

3.3、字典緩沖區

DM達夢資料庫體系結構詳解

DICT_BUF_SIZE -----大小

PLN_DICT_HASH_THRESHOLD ----關聯登記

當cache_pool_size的值大于等于該值的時候,記錄執行計劃中關聯的資料字典。

3.4、Sql緩沖區

介紹sql緩沖區之前,我們首先需要明白一條sql在dm資料庫中的執行過程,大緻為:

1、文法義分析。

2、語義分析(存放資料的資料字典表,産生實體讀)

3、權限判斷

4、查找資料塊是否記憶體(在記憶體,邏輯讀,不在記憶體,把資料塊從磁盤讀到buffer)

5、找是否有可用的執行計劃。有的直接按照執行計劃把結果展示出來。如果沒有,生成執行計劃,再把資料展示出來。

而Sql緩沖區中存放的就是:最近使用的sql,DMSQL代碼,執行計劃和最近查詢的結果集),用來減少硬解析。

檢視方式:

DM達夢資料庫體系結構詳解

USE_PLN_POOL表示執行計劃是否重用:

0 關閉, 1,2,3重用。

3.5、日志緩沖區

日志緩沖區是用于存放重做日志的記憶體緩沖區,dm中資料每3s寫一次或是commit。

DM達夢資料庫體系結構詳解

RLOG_BUF_SIZE ----- 日志緩沖區的大小 機關:page 設定成2的幂。

RLOG_POOL_SIZE ----最大日志緩沖區的大小 機關:M

3.6、排序區

對資料進行排序,如果記憶體排序無法完成,把部分排序轉到磁盤(temp)

SORT_BUF_SIZE —大小,值要結合你的業務。

3.7、HASH區

HJ_BUF_SIZE

3.8、重做日志檔案的管理

–檢視日志檔案:

DM達夢資料庫體系結構詳解

–增加一個日志檔案:

DM達夢資料庫體系結構詳解

–修改日志檔案的大小:

DM達夢資料庫體系結構詳解

需要注意:所有日志檔案大小要一緻!