達夢記憶體調整及修改方法
1 共享記憶體
1.1 修改共享記憶體
MEMORY_POOL 決定了以 M 為單位的公共記憶體池的大小
SQL> call sp_set_para_value(1,'MEMORY_POOL',350);
call sp_set_para_value(1,'MEMORY_POOL',350);
[-839]:Try to alter static ini parameter.
used time: 23.468(ms). Execute id is 0.
MEMORY_POOL 是靜態引數,所以不能直接修改記憶體中的數值。
SQL> call sp_set_para_value(2,'MEMORY_POOL',350);
DMSQL executed successfully
used time: 7.879(ms). Execute id is 25.
只 能修改dm.ini中的數值,然後重啟生效
1.2 限制MEMORY_POOL 大小的相關引數
MEMORY_TARGET 可以用來限制共享記憶體可以使用多少系統記憶體,0 表示的是不限制。
SQL> Select para_name,para_value from v$dm_ini where para_name='MEMORY_TARGET';
行號 PARA_NAME PARA_VALUE
---------- ------------- ----------
1 MEMORY_TARGET 0
2 資料緩衝區
。
2.1 修改BUFFER 數值
BUFFER 是使用者行存表的系統緩衝區。BUFFER表示初始的系統緩衝區大小,單位為M。OLTP BUFFER 大小為整個實體記憶體的40%-60%
OLAP BUFFER 大小為整個實體記憶體的60%-80%
SQL> call sp_set_para_value(1,'BUFFER',300);
call sp_set_para_value(1,'BUFFER',300);
[-839]:Try to alter static ini parameter.
used time: 5.653(ms). Execute id is 0.
BUFFER 也是靜態引數,不能更改記憶體中的數值
SQL> call sp_set_para_value(2,'BUFFER',300);
DMSQL executed successfully
used time: 7.851(ms). Execute id is 31.
2.2 限制BUFFER 大小的相關引數
當BUFFER_POOLS=1時,系統支援緩衝區的自動擴充套件。MAX_BUFFER表示最多能擴到多大。在自動擴充套件後,如果系統的壓力在一段時間內比較低,系統又會自動收縮緩衝區。
SQL> Select para_name,para_value from v$dm_ini where para_name='BUFFER_POOLS';
LINEID para_name para_value
---------- ------------ ----------
1 BUFFER_POOLS 1
used time: 7.453(ms). Execute id is 5
3 sql 緩衝區
SQL 緩衝區提供在執行 SQL 語句過程中所需要的記憶體,包括計劃、SQL 語句和結果集緩
存。
很多應用當中都存在反覆執行相同 SQL 語句的情況,此時可以使用緩衝區儲存這些語句
和它們的執行計劃,這就是計劃重用。這樣帶來的好處是加快了 SQL 語句執行效率,但同時
給記憶體也增加了壓力。
DM Server 在配置檔案 dm.ini 提供了引數來支援是否需要計劃重用,引數為
USE_PLN_POOL ,當指定為非 0 時,則啟動計劃重用;為 0 時禁止計劃重用。DM 同時還提
供了引數 CACHE_POOL_SIZE(單位為 MB),來改變 SQL 緩衝區大小,系統管理員可以設
置該值以滿足應用需求,預設值為 10M。
SQL> Select para_name,para_value from v$dm_ini where para_name='USE_PLN_POOL';
LINEID para_name para_value
---------- ------------ ----------
USE_PLN_POOL 1
調整sql緩衝區的大小:
1 select para_name,para_value from v$dm_ini where para_name='CACHE_POOL_SIZE';
LINEID para_name para_value
---------- --------------- ----------
1 CACHE_POOL_SIZE 20
4 字典緩衝區
DICT_BUF_SIZE 將最近使用的資料字典快取到記憶體中,減少物理IO。
SQL> Select para_name,para_value from v$dm_ini where para_name like '%DICT%';
LINEID para_name para_value
---------- ----------------------- ----------
1 DICT_BUF_SIZE 5
2 PLN_DICT_HASH_THRESHOLD 20
used time: 7.062(ms). Execute id is 14.
DICT_BUF_SIZE //
大小
PLN_DICT_HASH_THRESHOLD //關聯登記
注:當cache_pool_size的值大於等於PLN_DICT_HASH_THRESHOLD的值的時候,才開啟記錄執行計劃中關聯的資料字典,從而減少物理IO,調優時需注意。
5 重做日誌緩衝區
機制:每3秒寫一次。
Commit:;
2 Select para_name,para_value from v$dm_ini where para_name like 'RLOG%';
LINEID para_name para_value
---------- ------------------------ ----------
1 RLOG_CRC 0
2 RLOG_BUF_SIZE 512
3 RLOG_POOL_SIZE 128
4 RLOG_PARALLEL_ENABLE 0
5 RLOG_APPEND_LOGIC 0
6 RLOG_APPEND_SYSTAB_LOGIC 0
7 RLOG_RESERVE_SIZE 40960
8 RLOG_CHECK_SPACE 1
9 RLOG_SAFE_SPACE 128
10 RLOG_SAFE_PERCENT 25
11 RLOG_SEND_APPLY_MON 64
LINEID para_name para_value
---------- ---------------- ----------
12 RLOG_CRC_IN_RFIL 1
12 rows got
used time: 7.440(ms). Execute id is 9.
Rlog_buf_size 日誌緩衝區的大小 單位 page
RLOG_POOL_SIZE 最大日誌緩衝區的大小 M
6 排序區
如果記憶體排序無法完成,把部分排序轉到磁碟上。也就是temp表空間中。
2 Select para_name,para_value from v$dm_ini where para_name like 'SORT%';
LINEID para_name para_value
---------- -------------------- ----------
1 SORT_BUF_SIZE 2
2 SORT_BLK_SIZE 1
3 SORT_BUF_GLOBAL_SIZE 1000
4 SORT_FLAG 0
5 SORT_OPT_SIZE 0
used time: 7.172(ms). Execute id is 10.
7 Hash 區
產生hash join時用到的區。
1 Select para_name,para_value from v$dm_ini where para_name like 'HJ_BUF%';
LINEID para_name para_value
---------- ------------------ ----------
1 HJ_BUF_GLOBAL_SIZE 500
2 HJ_BUF_SIZE 50
used time: 7.142(ms). Execute id is 11.
8 修改引數的方法
SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64) 該過程用於修改整型靜態配置引數和動態配置引數。SCOPE引數為1表示在記憶體和INI檔案中都修改引數值,此時只能修改動態的配置引數。引數為2表示只在INI檔案中修改配置引數,
此時可用來修改靜態配置引數和動態配置引數。當SCOPE等於1,試圖修改靜態配置引數時伺服器會返回錯誤資訊。只有具有DBA角色的使用者才有許可權呼叫SP_SET _PARA_VALUE。
DM 的動態INI引數分為系統級和會話級兩種級別。會話級引數在伺服器執行過程中被修改時,之前建立的會話不受影響,只有新建立的會話使用新的引數值。
1. SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint) 設定某個會話級INI引數的值,設定的引數值只對本會話有效。
2. SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)) 重置某個會話級INI引數的值,使得這個INI引數的值和系統INI引數的值保持一致。
3. SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)) 獲得當前會話的某個會話級INI引數的值。
下面修改動態引數enable_auidt,scope=1同時修改記憶體和dm.ini檔案
SQL> call sp_set_para_value(1,'ENABLE_AUDIT',1);
DMSQL executed successfully
used time: 87.566(ms). Execute id is 199.
SQL> select sf_get_para_value(1,'ENABLE_AUDIT');
LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1 1
used time: 10.131(ms). Execute id is 200.
查詢v$dm_ini檢視可以看到,當前dm.ini檔案中也被修改了因為file_value=1
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1 ENABLE_AUDIT 1 0 2 N 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS
used time: 201.366(ms). Execute id is 206.
查詢v$parameter檢視可以看到,當前記憶體中也被修改了因為sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT';
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1 385 ENABLE_AUDIT SYS 1 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit
used time: 7.130(ms). Execute id is 207.
下面修改動態引數enable_auidt,scope=2只修改dm.ini檔案
SQL> call sp_set_para_value(2,'ENABLE_AUDIT',0);
DMSQL executed successfully
used time: 29.707(ms). Execute id is 208.
SQL> select sf_get_para_value(1,'ENABLE_AUDIT');
LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1 0
查詢v$dm_ini檢視可以看到,當前dm.ini檔案中被修改了因為file_value=0,sess_value=1(session級別還是1並沒有改變)
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1 ENABLE_AUDIT 1 0 2 N 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS
used time: 5.207(ms). Execute id is 209.
查詢v$parameter檢視可以看到,當前記憶體中沒有被修改了因為sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT';
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1 385 ENABLE_AUDIT SYS 1 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit
1 共享記憶體
1.1 修改共享記憶體
MEMORY_POOL 決定了以 M 為單位的公共記憶體池的大小
SQL> call sp_set_para_value(1,'MEMORY_POOL',350);
call sp_set_para_value(1,'MEMORY_POOL',350);
[-839]:Try to alter static ini parameter.
used time: 23.468(ms). Execute id is 0.
MEMORY_POOL 是靜態引數,所以不能直接修改記憶體中的數值。
SQL> call sp_set_para_value(2,'MEMORY_POOL',350);
DMSQL executed successfully
used time: 7.879(ms). Execute id is 25.
只 能修改dm.ini中的數值,然後重啟生效
1.2 限制MEMORY_POOL 大小的相關引數
MEMORY_TARGET 可以用來限制共享記憶體可以使用多少系統記憶體,0 表示的是不限制。
SQL> Select para_name,para_value from v$dm_ini where para_name='MEMORY_TARGET';
行號 PARA_NAME PARA_VALUE
---------- ------------- ----------
1 MEMORY_TARGET 0
2 資料緩衝區
。
2.1 修改BUFFER 數值
BUFFER 是使用者行存表的系統緩衝區。BUFFER表示初始的系統緩衝區大小,單位為M。OLTP BUFFER 大小為整個實體記憶體的40%-60%
OLAP BUFFER 大小為整個實體記憶體的60%-80%
SQL> call sp_set_para_value(1,'BUFFER',300);
call sp_set_para_value(1,'BUFFER',300);
[-839]:Try to alter static ini parameter.
used time: 5.653(ms). Execute id is 0.
BUFFER 也是靜態引數,不能更改記憶體中的數值
SQL> call sp_set_para_value(2,'BUFFER',300);
DMSQL executed successfully
used time: 7.851(ms). Execute id is 31.
2.2 限制BUFFER 大小的相關引數
當BUFFER_POOLS=1時,系統支援緩衝區的自動擴充套件。MAX_BUFFER表示最多能擴到多大。在自動擴充套件後,如果系統的壓力在一段時間內比較低,系統又會自動收縮緩衝區。
SQL> Select para_name,para_value from v$dm_ini where para_name='BUFFER_POOLS';
LINEID para_name para_value
---------- ------------ ----------
1 BUFFER_POOLS 1
used time: 7.453(ms). Execute id is 5
3 sql 緩衝區
SQL 緩衝區提供在執行 SQL 語句過程中所需要的記憶體,包括計劃、SQL 語句和結果集緩
存。
很多應用當中都存在反覆執行相同 SQL 語句的情況,此時可以使用緩衝區儲存這些語句
和它們的執行計劃,這就是計劃重用。這樣帶來的好處是加快了 SQL 語句執行效率,但同時
給記憶體也增加了壓力。
DM Server 在配置檔案 dm.ini 提供了引數來支援是否需要計劃重用,引數為
USE_PLN_POOL ,當指定為非 0 時,則啟動計劃重用;為 0 時禁止計劃重用。DM 同時還提
供了引數 CACHE_POOL_SIZE(單位為 MB),來改變 SQL 緩衝區大小,系統管理員可以設
置該值以滿足應用需求,預設值為 10M。
SQL> Select para_name,para_value from v$dm_ini where para_name='USE_PLN_POOL';
LINEID para_name para_value
---------- ------------ ----------
USE_PLN_POOL 1
調整sql緩衝區的大小:
1 select para_name,para_value from v$dm_ini where para_name='CACHE_POOL_SIZE';
LINEID para_name para_value
---------- --------------- ----------
1 CACHE_POOL_SIZE 20
4 字典緩衝區
DICT_BUF_SIZE 將最近使用的資料字典快取到記憶體中,減少物理IO。
SQL> Select para_name,para_value from v$dm_ini where para_name like '%DICT%';
LINEID para_name para_value
---------- ----------------------- ----------
1 DICT_BUF_SIZE 5
2 PLN_DICT_HASH_THRESHOLD 20
used time: 7.062(ms). Execute id is 14.
DICT_BUF_SIZE //
大小
PLN_DICT_HASH_THRESHOLD //關聯登記
注:當cache_pool_size的值大於等於PLN_DICT_HASH_THRESHOLD的值的時候,才開啟記錄執行計劃中關聯的資料字典,從而減少物理IO,調優時需注意。
5 重做日誌緩衝區
機制:每3秒寫一次。
Commit:;
2 Select para_name,para_value from v$dm_ini where para_name like 'RLOG%';
LINEID para_name para_value
---------- ------------------------ ----------
1 RLOG_CRC 0
2 RLOG_BUF_SIZE 512
3 RLOG_POOL_SIZE 128
4 RLOG_PARALLEL_ENABLE 0
5 RLOG_APPEND_LOGIC 0
6 RLOG_APPEND_SYSTAB_LOGIC 0
7 RLOG_RESERVE_SIZE 40960
8 RLOG_CHECK_SPACE 1
9 RLOG_SAFE_SPACE 128
10 RLOG_SAFE_PERCENT 25
11 RLOG_SEND_APPLY_MON 64
LINEID para_name para_value
---------- ---------------- ----------
12 RLOG_CRC_IN_RFIL 1
12 rows got
used time: 7.440(ms). Execute id is 9.
Rlog_buf_size 日誌緩衝區的大小 單位 page
RLOG_POOL_SIZE 最大日誌緩衝區的大小 M
6 排序區
如果記憶體排序無法完成,把部分排序轉到磁碟上。也就是temp表空間中。
2 Select para_name,para_value from v$dm_ini where para_name like 'SORT%';
LINEID para_name para_value
---------- -------------------- ----------
1 SORT_BUF_SIZE 2
2 SORT_BLK_SIZE 1
3 SORT_BUF_GLOBAL_SIZE 1000
4 SORT_FLAG 0
5 SORT_OPT_SIZE 0
used time: 7.172(ms). Execute id is 10.
7 Hash 區
產生hash join時用到的區。
1 Select para_name,para_value from v$dm_ini where para_name like 'HJ_BUF%';
LINEID para_name para_value
---------- ------------------ ----------
1 HJ_BUF_GLOBAL_SIZE 500
2 HJ_BUF_SIZE 50
used time: 7.142(ms). Execute id is 11.
8 修改引數的方法
SP_SET_PARA_VALUE (scope int, paraname varchar(256), value int64) 該過程用於修改整型靜態配置引數和動態配置引數。SCOPE引數為1表示在記憶體和INI檔案中都修改引數值,此時只能修改動態的配置引數。引數為2表示只在INI檔案中修改配置引數,
此時可用來修改靜態配置引數和動態配置引數。當SCOPE等於1,試圖修改靜態配置引數時伺服器會返回錯誤資訊。只有具有DBA角色的使用者才有許可權呼叫SP_SET _PARA_VALUE。
DM 的動態INI引數分為系統級和會話級兩種級別。會話級引數在伺服器執行過程中被修改時,之前建立的會話不受影響,只有新建立的會話使用新的引數值。
1. SF_SET_SESSION_PARA_VALUE (paraname varchar(8187), value bigint) 設定某個會話級INI引數的值,設定的引數值只對本會話有效。
2. SP_RESET_SESSION_PARA_VALUE (paraname varchar(8187)) 重置某個會話級INI引數的值,使得這個INI引數的值和系統INI引數的值保持一致。
3. SF_GET_SESSION_PARA_VALUE (paraname varchar(8187)) 獲得當前會話的某個會話級INI引數的值。
下面修改動態引數enable_auidt,scope=1同時修改記憶體和dm.ini檔案
SQL> call sp_set_para_value(1,'ENABLE_AUDIT',1);
DMSQL executed successfully
used time: 87.566(ms). Execute id is 199.
SQL> select sf_get_para_value(1,'ENABLE_AUDIT');
LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1 1
used time: 10.131(ms). Execute id is 200.
查詢v$dm_ini檢視可以看到,當前dm.ini檔案中也被修改了因為file_value=1
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1 ENABLE_AUDIT 1 0 2 N 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS
used time: 201.366(ms). Execute id is 206.
查詢v$parameter檢視可以看到,當前記憶體中也被修改了因為sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT';
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1 385 ENABLE_AUDIT SYS 1 1 1 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit
used time: 7.130(ms). Execute id is 207.
下面修改動態引數enable_auidt,scope=2只修改dm.ini檔案
SQL> call sp_set_para_value(2,'ENABLE_AUDIT',0);
DMSQL executed successfully
used time: 29.707(ms). Execute id is 208.
SQL> select sf_get_para_value(1,'ENABLE_AUDIT');
LINEID SF_GET_PARA_VALUE(1,'ENABLE_AUDIT')
---------- -----------------------------------
1 0
查詢v$dm_ini檢視可以看到,當前dm.ini檔案中被修改了因為file_value=0,sess_value=1(session級別還是1並沒有改變)
SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE
---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------
1 ENABLE_AUDIT 1 0 2 N 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit SYS
used time: 5.207(ms). Execute id is 209.
查詢v$parameter檢視可以看到,當前記憶體中沒有被修改了因為sys_value=1
SQL> select * from v$parameter where name='ENABLE_AUDIT';
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------
1 385 ENABLE_AUDIT SYS 1 1 0 Flag For Allowing Audit, 0: no audit 1: normal audit 2:normal audit and realtime audit
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786751/viewspace-2665674/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記憶體壓力及IO壓力調整方法記憶體
- solaris記憶體引數調整及管理記憶體
- weblogic 記憶體調整Web記憶體
- 達夢資料庫引數調整方法資料庫
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- win10怎麼調整虛擬記憶體_win10怎麼調虛擬記憶體Win10記憶體
- 達夢資料庫基礎知識(三)達夢資料庫記憶體結構資料庫記憶體
- Presto記憶體調優及原理(基礎篇)REST記憶體
- Tomcat修改記憶體配置Tomcat記憶體
- 達夢DCA認證學習筆記及體會筆記
- (三) MdbCluster分散式記憶體資料庫——節點狀態變化及分片調整分散式記憶體資料庫
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- iOS 記憶體洩漏排查方法及原因分析iOS記憶體
- 記憶體調優實戰記憶體
- ptrace attach 修改程序記憶體記憶體
- uniapp 雲開發省錢之調整函式執行記憶體大小APP函式記憶體
- MySQL整體架構與記憶體結構MySql架構記憶體
- Java記憶體模型(MESI、記憶體屏障、volatile和鎖及final記憶體語義)Java記憶體模型
- 【配置】elasticsearch6.x 控制檯中文亂碼和jvm記憶體大小調整ElasticsearchJVM記憶體
- 筆記本記憶體條怎麼裝?筆記本裝記憶體條的方法步驟、及注意事項筆記記憶體
- 如何修改網站網頁字型,調整網站字型的方法網站網頁
- jvm記憶體設定及記憶體溢位、解決方案JVM記憶體溢位
- jvm:記憶體模型、記憶體分配及GC垃圾回收機制JVM記憶體模型GC
- 在K8s中調整JVM提高CPU和記憶體利用率 - AnuragK8SJVM記憶體
- [20180604]在記憶體修改資料(bbed).txt記憶體
- JVM效能調優,記憶體分析工具JVM記憶體
- java-方法記憶體分配Java記憶體
- 記憶體混亂及解決方法和死鎖問題記憶體
- C/C++使用malloc為結構體陣列分配記憶體(及free釋放記憶體)的三種方法C++結構體陣列記憶體
- Java記憶體模型,垃圾回收機制,常用記憶體命令及工具Java記憶體模型
- Java應用程式中的記憶體洩漏及記憶體管理Java記憶體
- 如何在織夢網修改網站 織夢網修改網站方法網站
- JNI記憶體管理及優化記憶體優化
- JavaScript 記憶體管理及垃圾回收JavaScript記憶體
- 調皮的記憶體抖動?前生今世及App解決卡頓慢記憶體APP
- Java 8 記憶體管理原理解析及記憶體故障排查實踐Java記憶體
- 查詢windows記憶體卡槽及卡槽支援的最大記憶體Windows記憶體
- 【CDB】怎樣修改PDB的記憶體引數記憶體