達夢記憶體調整及修改方法

bobyut發表於2019-11-26

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章