1、DM邏輯結構
dm中和oracle一樣,也分為執行個體和資料庫兩個概念,而且這兩者的概念也基本一緻。
唯一的差別是:達夢是單程序,而oracle是多程序的。
- 執行個體:共享記憶體+背景的程序或線程。
- 資料庫:存放到磁盤的檔案。
一般是一個db對應一個執行個體,但是DSC(DM共享叢集)多個執行個體對一個資料庫。
dm的伺服器組成:
用戶端+伺服器(執行個體+資料庫)
用戶端不能直接去通路資料庫,用戶端把請求交給執行個體,執行個體去通路資料庫,把通路資訊,傳回執行個體,執行個體交給交給用戶端。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR1UMZRUTwUFVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwUTNyQTMyYTMzIzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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、共享記憶體
檢視共享記憶體大小:
其中0 表示的是不限制,在oracle中:memoroy_target=sga+pga
Memory_pool 表示系統記憶體池大小,檢視方法:
3.2、資料緩沖區buffer
1、存放的内容:LRU(最小使用算法)連結清單。
2、狀态:free,dirty,clean,pending.
3、如何去設定buffer的大小?
建議:
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的參數分為以下幾類:
- Sys/session 動态參數,同時修改記憶體和配置檔案
- Read only 資料庫運作狀态下,不能修改。
- In file 靜态參數,修改配置檔案。
其中參數2表示隻修改配置檔案,1表示修改配置檔案和記憶體。
另外需要注意的是,在oracle中Recycle(快速回收池)和Keep(保留池)存放的是表,而在DM中存放的是表空間。
3.3、字典緩沖區
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代碼,執行計劃和最近查詢的結果集),用來減少硬解析。
檢視方式:
USE_PLN_POOL表示執行計劃是否重用:
0 關閉, 1,2,3重用。
3.5、日志緩沖區
日志緩沖區是用于存放重做日志的記憶體緩沖區,dm中資料每3s寫一次或是commit。
RLOG_BUF_SIZE ----- 日志緩沖區的大小 機關:page 設定成2的幂。
RLOG_POOL_SIZE ----最大日志緩沖區的大小 機關:M
3.6、排序區
對資料進行排序,如果記憶體排序無法完成,把部分排序轉到磁盤(temp)
SORT_BUF_SIZE —大小,值要結合你的業務。
3.7、HASH區
HJ_BUF_SIZE
3.8、重做日志檔案的管理
–檢視日志檔案:
–增加一個日志檔案:
–修改日志檔案的大小:
需要注意:所有日志檔案大小要一緻!