天天看點

DB2動态配置參數(Linux)

     前言:此文檔中提供的腳本試用于任何的OS,但是.sh隻能在LINUX上執行。對以如定時執行.sh腳本,請看Linux下的corntab的用法,到這不再贅述。

DB2 允許您利用動态配置。在 DB2 資料庫正在運作、接受連接配接或處理事務時,可以更改該資料庫或執行個體中的某些配置參數。下面是一個說明可以如何使用 DB2 中的動态配置功能的示例。

在此方案中,為資料庫伺服器配置了 4 GB 的記憶體,其中 .5 GB 記憶體可用于資料庫管理器。有8個處理器。資料庫伺服器專用于正在 DB2INST 執行個體上運作的名為 DB2DYN 的單個資料庫。資料庫工作負載在一天和一周中是有所變化的,如下所示:

l         白天的工作負載(05:00-20:00)包括許多連接配接和并發事務。

l         一天結束時的工作負載(20:00-24:00)包括總結報告和決策支援查詢,具有很少的連接配接和事務。

l         日常維護工作負載(24:00-05:00)包括聯機裝入操作、增量備份和索引建立等等

   每周維護工作負載包括大型表重組操作、運作統計資訊操作和建立較大索引

   如果具有這些工作負載特征,則可如下表所示來配置系統。

白天  (05:00 - 20:00)  一天的結束  (20:00 - 24:00)  日常維護(24:00 - 05:00)  每周維護(星期天)    
資料庫活動   較重的事務工作負載   決策支援查詢   裝入、備份和索引建立   在緩沖池 1 中執行重組和運作統計資訊   
 緩沖池 1(MB)   1000   500   500   2000   
 緩沖池 2(MB)   1000   500   500   200   
 排序堆(MB)   0.1   20   200   200   
 目錄高速緩存(MB)   200   200   50   50   
 程式包高速緩存(MB)   800   200   200   200   
 實用程式堆(MB)   1000  
 對話級别   1   4   4    

可以從将資料庫配置參數 database_memory 設定為 3.5GB 開始,進而為資料庫保留此指定數量的可用記憶體。這是一次性操作,一旦完成此操作, 它就将為資料庫提供 3.5 GB(或 917 504個4 KB 頁)的保留記憶體,用于建立緩沖池或調整配置。

db2start

db2 update db cfg for db2dyn using database_memory 917504

db2stop

然後,可以使用下列腳本來将資料庫從一種配置轉換為另一種配置,(可以安排在适當的時間運作這些腳本。)

 MorningConfiguration.sh

# This script is used to prepare

# the database server for the

# morning configuration,

# for a workload consisting of

# a large number of OLTP connections and

# concurent transactions.

db2 connect to db2dyn

db2 update db cfg using sortheap 25

db2 update db cfg using util_heap_sz 32

db2 alter bufferpool bufferpool1 size 262144

db2 commit

db2 update db cfg using catcachesz 51200

db2 update db cfg using pkcachesz 204800

db2 alter bufferpool bufferpool2 size 262144

db2 commit

db2 flush package cache dynamic

db2 get db cfg show detail

db2 connect reset

db2 attach to instance db2inst

db2 update dbm cfg using diaglevel 1

db2 get dbm cfg show detail

db2 detach

EveningConfiguration.sh

# This script is used to prepare

# the database server for the

# evening configuration,

# for a workload consisting of

# decision-support queries.

db2 connect to db2dyn

db2 alter bufferpool bufferpool1 size 131072

db2 commit

db2 alter bufferpool bufferpool2 size 131072

db2 commit

db2 update db cfg using pkcachesz 51200

db2 update db cfg using catcachesz 51200

db2 update db cfg using util_heap_sz 32

db2 update db cfg using sortheap 5120

db2 flush package cache dynamic

db2 get db cfg show detail

db2 connect reset

db2 attach to instance db2inst

db2 update dbm cfg using diaglevel 3

db2 get dbm cfg show detail

db2 detach

 NightTimeConfiguration.sh

# This script is used to prepare

# the database server for the

# daily maintenance configuration,

# for a workload consisting of

# index creation and load and backup

# operations.

db2 connect to db2dyn

db2 alter bufferpool bufferpool1 size 131072

db2 commit

db2 alter bufferpool bufferpool2 size 131072

db2 commit

db2 update db cfg using catcachesz 51200

db2 update db cfg using pkcachesz 51200

db2 update db cfg using sortheap 51200

db2 update db cfg using util_heap_sz 262144

db2 flush package cache dynamic

db2 get db cfg show detail

db2 connect reset

db2 attach to instance db2inst

db2 update dbm cfg using diaglevel 4

db2 get dbm cfg show detail

db2 detach

MaintenanceConfiguration.sh

# This script is used to prepare

# the database server for the

# weekly maintenance configuration,

# for a workload consisting of

# reorg and runstats operations executed

# in buffer pool 1.

db2 connect to db2dyn

db2 update db cfg using util_heap_sz 32

db2 alter bufferpool bufferpool2 size 51200

db2 commit

db2 update db cfg using sortheap 5120

db2 update db cfg using catcachesz 51200

db2 update db cfg using pkcachesz 51200

db2 alter bufferpool bufferpool1 size 524288

db2 commit

db2 flush package cache dynamic

db2 get db cfg show detail

db2 connect reset

db2 attach to instance db2inst

db2 update dbm cfg using diaglevel 4

db2 get dbm cfg show detail

db2 detach

注意,一個腳本與下一個腳本的操作順序是不同的。 應該在執行會增大記憶體需求的操作之前完成将減少記憶體需求的操作;否則,增大記憶體需求可能會失敗。

所有緩沖池大小調整都是在落實操作之前進行的,原因是緩沖池更改是 SQL 操作,并且是事務的一部分。

每次重新配置之後都會重新整理程式包高速緩存, 以發出信号通知優化器已經對配置進行了重大更改,現有的所有動态 SQL 存取方案現在都變得無效。

動态資料庫管理器重新配置操作是在應用程式連接配接至執行個體時執行的, 而動态資料庫操作則是在應用程式連接配接至資料庫時執行的。

GET DATABASE MANAGER CONFIGURATION 指令或 GET DATABASE CONFIGURATION 指令的 SHOW DETAIL 子句可用來驗證動态重新配置操作是否已生效。

此方案中可能已動态更改的其它資料庫配置參數包括:

locklist 參數,如果資料庫經常進行鎖定更新,則可動态增大該參數。但是,不能動态減小此參數的值。 dft_queryopt 參數,它隻适用于新的連接配接,在啟動決策支援工作負載之前可以用來提高優化級别。 dft_degree 參數,它也是隻适用于新的連接配接,可用來為決策支援查詢提供增強的查詢内并行性。