セルフチューニングメモリー機能(STMM)とは?
DBMSのパフォーマンスを維持するにあたり、メモリー管理は重要です。
メモリーの使用量を監視し、問題があればチューニングを実施するの繰り返しであるメモリー管理は非常に手間もかかる上に、
高度なデータベース管理者のノウハウも必要になる場合もあります。
そんなメモリー管理を自動で行う機能が多くのDBMSで提供されており、
Db2で提供されている自動メモリー管理機能ををセルフチューニングメモリー機能(STMM機能)と言います。
以下からセルフチューニングメモリー機能はSTMMと記載します。
STMM機能の管理対象メモリーについて
Db2のSTMM機能では以下のメモリーのチューニングを自動で行うことが可能です。
・データベースメモリー
・ロックリスト
・パッケージキャッシュ
・ソートヒープ
・バッファープール
設定方法
1.STMM機能をONにする
STMM機能を使用するデータベースにアクセスします
db2 connect to DB名
データベース構成パラメーター self_tuning_memの値を確認します。
db2 get db cfg
またはパイプを使用しgrepすることで出力を絞ることも可能です
db2 get db cfg | grep SELF_TUNING_MEM
[db2inst1@db2-2 ~]$ db2 get db cfg | grep SELF_TUNING_MEM
Self tuning memory (SELF_TUNING_MEM) = ON
OFFに設定されている場合はONに設定を変更します。
デフォルトではONに設定されています。
db2 update db cfg using SELF_TUNING_MEM ON
[db2inst1@db2-2 ~]$ db2 update db cfg using SELF_TUNING_MEM ON
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
self_tuning_mem- セルフチューニング・メモリー構成パラメーター
2.各メモリーのサイズ設定値をAUTOMATICに設定
バッファープール以外のメモリーに関しては、STMMで管理するメモリー領域のデータベース構成パラメーターの値をAUTOMATICに変更します。
以下に各メモリー領域のSTMM管理を有効にするパラメーターを記載します。
・データベースメモリー(DATABASE_MEMORY)
db2 update db cfg using DATABASE_MEMORY AUTOMATIC
[db2inst1@db2-2 ~]$ db2 update db cfg using DATABASE_MEMORY AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
database_memory - データベース共有メモリー・サイズ構成パラメーター
・ロックリスト(LOCKLISTとMAXLOCKS 両方の設定が必要)
db2 update db cfg using LOCKLIST AUTOMATIC
db2 update db cfg using MAXLOCKS AUTOMATIC
[db2inst1@db2-2 ~]$ db2 update db cfg using LOCKLIST AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@db2-2 ~]$ db2 update db cfg using MAXLOCKS AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[locklist - ロック・リスト用最大ストレージ構成パラメーター]
(https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.admin.config.doc/doc/r0000267.html)
maxlocks - エスカレーション前のロック・リストの最大パーセント構成パラメーター
・パッケージキャッシュ
db2 update db cfg using PCKCACHESZ AUTOMATIC
[db2inst1@db2-2 ~]$ db2 update db cfg using PCKCACHESZ AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
pckcachesz - パッケージ・キャッシュ・サイズ構成パラメーター
・ソートヒープ
db2 update db cfg using SORTHEAP AUTOMATIC
db2 update db cfg using SHEAPTHRES_SHR AUTOMATIC
[db2inst1@db2-2 ~]$ db2 update db cfg using SORTHEAP AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@db2-2 ~]$ db2 update db cfg using SHEAPTHRES_SHR AUTOMATIC
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
sortheap - ソート・ヒープ・サイズ構成パラメーター
sheapthres_shr - 共有ソートのソート・ヒープのしきい値構成パラメーター
・バッファープール
STMM機能でバッファープールを管理する場合は、データベースパラメーターを変更するのではなくcreate bufferpoolコマンドまたはalter bufferpoolコマンドにて、特定のバッファープール名を指定し、SIZEオプションにてAUTOMATICを設定します。
db2 CREATE BUFFERPOOL バッファープール名 SIZE 2000 AUTOMATIC
db2 ALTER BUFFERPOOL バッファープール名 SIZE 1500 AUTOMATIC
(上)新規作成時 2000は初期値 省略可(省略時は1000)
(下)既存バッファープールの変更時 1500は初期値 省略可(省略時は1000)
[db2inst1@db2-2 ~]$ db2 CREATE BUFFERPOOL bufferpool1 SIZE 2000 AUTOMATIC
DB20000I The SQL command completed successfully.
[db2inst1@db2-2 ~]$ db2 ALTER BUFFERPOOL IBMDEFAULTBP SIZE 1500 AUTOMATIC
DB20000I The SQL command completed successfully.
[CREATE BUFFERPOOL ステートメント]
(https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000912.html)
[ALTER BUFFERPOOL ステートメント]
(https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000885.html)
STMM機能を設定する上での注意事項
STMMが有効に稼働するためには、STMMが制御できるメモリ領域が二つ以上あることが必要です。
STMM機能がONに設定されている場合でも、1つのメモリー領域のみAUTOMATIC設定がされている場合はSTMM機能は有効化されません。
参考リンク
[第4回 セルフチューニング・メモリー]
(https://www.ibm.com/developerworks/jp/data/library/dataserver/j-d_db2maintenance04/index.html)