達夢數據庫自動根據機器配置調整性能相關參數

--安裝完達夢數據庫後,可以執行以下腳本自動調整性能相關的參數

--修改調整基礎參數
declare
v_mem_mb int;
v_cpus int;
mem_per int:=100;
MEMORY_POOL int;
CACHE_POOL_SIZE int;
BUFFER_POOLS int;
SORT_BUF_SIZE int;
SORT_BUF_GLOBAL_SIZE INT;
DICT_BUF_SIZE  INT;
SESS_POOL_SIZE INT;
begin
	SELECT TOP 1 N_CPU,TOTAL_PHY_SIZE/1024/1024 INTO v_cpus,v_mem_mb FROM V$SYSTEMINFO;
	
	print v_cpus;
	print v_mem_mb;
	
	v_mem_mb=round(v_mem_mb,-3);
	print v_mem_mb;
	
	--修改線程數
	IF v_cpus < 8  THEN v_cpus := 8;  END IF;
	IF v_cpus > 64 THEN v_cpus := 64; END IF;
	SP_SET_PARA_VALUE(2,'WORKER_THREADS',v_cpus);
	SP_SET_PARA_VALUE(2,'TASK_THREADS',v_cpus/2);
	
	IF v_mem_mb <= 2000  THEN
	  return;
	END IF;
	
	--修改內存池
	IF v_mem_mb >= 16000  THEN 
	   MEMORY_POOL := 2048;
	   CACHE_POOL_SIZE := 1024;
	   SORT_BUF_SIZE := 100;
	   SORT_BUF_GLOBAL_SIZE := 3000; 
	   DICT_BUF_SIZE := 500;
	   BUFFER_POOLS = 19;
	   SESS_POOL_SIZE = 64;
	ELSE
	   MEMORY_POOL :=cast(v_mem_mb * 0.0625 as int);
	   CACHE_POOL_SIZE := 200;
	   SORT_BUF_SIZE := 20;
	   SORT_BUF_GLOBAL_SIZE := 500;
	   DICT_BUF_SIZE := 50;
	   BUFFER_POOLS := 7;  
	   SESS_POOL_SIZE =32;
	END IF;	
	
	v_mem_mb := v_mem_mb * (mem_per/100.0);
	--修改內存
	SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY',       mem_per);
	SP_SET_PARA_VALUE(2,'MEMORY_POOL',         MEMORY_POOL);	
	SP_SET_PARA_VALUE(2,'BUFFER',              cast(v_mem_mb * 0.5 as int));
	SP_SET_PARA_VALUE(2,'MAX_BUFFER',          cast(v_mem_mb * 0.5 as int));
	SP_SET_PARA_VALUE(2,'BUFFER_POOLS',        BUFFER_POOLS);--7,11,19,37,67,101 (4G-128G)
	SP_SET_PARA_VALUE(2,'RECYCLE',        	   cast(v_mem_mb * 0.125 as int));	
	SP_SET_PARA_VALUE(2,'RECYCLE_POOLS',       11);
	
	SP_SET_PARA_VALUE(2,'HJ_BUF_GLOBAL_SIZE',  cast(v_mem_mb * 0.0625 as int));
	SP_SET_PARA_VALUE(2,'HJ_BUF_SIZE',         cast(v_mem_mb * 0.00625 as int));
	SP_SET_PARA_VALUE(2,'HAGR_BUF_GLOBAL_SIZE',cast(v_mem_mb * 0.0625 as int));
	SP_SET_PARA_VALUE(2,'HAGR_BUF_SIZE',       cast(v_mem_mb * 0.00625 as int));
	
	SP_SET_PARA_VALUE(2,'SESS_POOL_SIZE',      SESS_POOL_SIZE);
	SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE',     CACHE_POOL_SIZE);--SQL緩衝池大小,以兆爲單位。
	SP_SET_PARA_VALUE(2,'USE_PLN_POOL',        1); --啓用執行計劃緩存,默認開啓
	SP_SET_PARA_VALUE(2,'OLAP_FLAG',           2); --統計分析型庫設置爲1
	SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',    1); --視圖上拉優化
	--SP_SET_PARA_VALUE(2,'ENABLE_MONITOR',      2); --關閉性能監視功能
	SP_SET_PARA_VALUE(2,'SVR_LOG',             0); --關閉SQL日誌記錄
	SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE',       SORT_BUF_SIZE);--數據量大,且排序sql較多,可調大該參數,單位Mb
	SP_SET_PARA_VALUE(2,'SORT_BUF_GLOBAL_SIZE',       SORT_BUF_GLOBAL_SIZE);--數據量大,且排序sql較多,可調大該參數,單位Mb
	SP_SET_PARA_VALUE(2,'TEMP_SIZE',           1024);--默認創建的臨時表空間大小,以兆爲單位
	SP_SET_PARA_VALUE(2,'MAX_SESSIONS',        500); --最大會話連接數
	SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 1000); --單個會話上允許同時打開的語句句柄最大數
	--SP_SET_PARA_VALUE(2,'BATCH_PARAM_OPT',   1);
	SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE',       DICT_BUF_SIZE); --字典緩衝區大小,以兆爲單位
	SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',		0);   
	--SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',		2);  --開啓oracle兼容性
end;

  --執行完以上腳本後,重啓數據庫服務即可生效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章