データベース - IBM DB2 - AUTOCONFIGURE
1. 概要 データベースのチューニングというのは難しいもので・・・。 個人で扱っているデータベースはちっちゃいのでほとんどチューニングもくそもないのですが。 仕事で扱うようなデータベースは巨大になるので、チューニングしないとアクセス速度が極端に遅かったりするのです。 IBM DB2 にはそれを自動でやってくれるコマンドがあるようなのです。 2. 推奨値を表示する 実際に設定を行う前に・・・。 推奨値を表示してみます。 これは、Windows マシンで実際にやってみました。 データベース管理者のコマンドプロンプトで > db2 connect to データベース名 データベース接続情報 データベース・サーバー = DB2/NT64 10.5.6 SQL 許可 ID = 伏字 ローカル・データベース別名 = 伏字 > db2 AUTOCONFIGURE APPLY NONE データベース・マネージャー構成の現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- エージェント・スタック・サイズ (AGENT_STACK_SZ) = 16 16 アプリケーション・サポート層ヒープ・サイズ (4KB) (ASLHEAPSZ) = 15 15 内部通信バッファーの数 (4KB) (FCM_NUM_BUFFERS) = AUTOMATIC(4096) AUTOMATIC(4096) パーティション内並列処理を有効にする (INTRA_PARALLEL) = NO NO 並列処理の最大照会度 (MAX_QUERYDEGREE) = 2 1 エージェント・プール・サイズ (NUM_POOLAGENTS) = AUTOMATIC(100) AUTOMATIC(100) プールにあるエージェントの初期化数 NUM_INITAGENTS) = 0 0 リクエスター入出力ブロック・サイズの最大数 (バイト) (RQRIOBLK) = 65535 65535 ソート・ヒープしきい値 (4KB) (SHEAPTHRES) = 0 0 データベース構成の現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- デフォルト・アプリケーション・ヒープ (4KB) (APPLHEAPSZ) = 256 256 カタログ・キャッシュ・サイズ (4KB) (CATALOGCACHE_SZ) = 300 1101 変更ページしきい値 (CHNGPGS_THRESH) = 80 80 データベース・ヒープ (4KB) (DBHEAP) = AUTOMATIC(14589) AUTOMATIC(10613) 並列処理の度合い (DFT_DEGREE) = 1 1 デフォルトの表スペース・エクステント・サイズ (ページ) (DFT_EXTENT_SZ) = 32 32 デフォルトのプリフェッチ・サイズ (ページ) (DFT_PREFETCH_SZ) = AUTOMATIC(32) AUTOMATIC(32) デフォルトの照会最適化クラス (DFT_QUERYOPT) = 5 5 ロック・リスト用最大ストレージ (4KB) (LOCKLIST) = AUTOMATIC(11712) AUTOMATIC(6200) ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 16384 1024 1 次ログ・ファイルの数 (LOGPRIMARY) = 24 10 2 次ログ・ファイル数 (LOGSECOND) = 14 12 アクティブ・アプリケーションの最大数 (MAXAPPLS) = AUTOMATIC(1281) AUTOMATIC(40) アプリケーションあたりのロック・リストのパーセント (MAXLOCKS) = AUTOMATIC(98) AUTOMATIC(60) 非同期ページ・クリーナー数 (NUM_IOCLEANERS) = AUTOMATIC(2) AUTOMATIC(2) 入出力サーバー数 (NUM_IOSERVERS) = AUTOMATIC(16) AUTOMATIC(20) パッケージ・キャッシュ・サイズ (4KB) (PCKCACHESZ) = AUTOMATIC(10251) AUTOMATIC(1533) ソート・リスト・ヒープ (4KB) (SORTHEAP) = AUTOMATIC(1000) AUTOMATIC(968) SQL ステートメント・ヒープ (4KB) (STMTHEAP) = AUTOMATIC(8192) AUTOMATIC(8192) 統計ヒープ・サイズ (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384) AUTOMATIC(4384) ユーティリティー・ヒープ・サイズ (4KB) (UTIL_HEAP_SZ) = AUTOMATIC(412000) AUTOMATIC(13054) セルフチューニング・メモリー (SELF_TUNING_MEM) = ON ON 自動 RUNSTATS (AUTO_RUNSTATS) = ON ON 共有ヒープのソート・ヒープしきい値 (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(5004) AUTOMATIC(19374) ログ・バッファー・サイズ (4KB) (LOGBUFSZ) = 9591 2149 デフォルトの表編成 (DFT_TABLE_ORG) = ROW ROW データベース・メモリーしきい値 (DB_MEM_THRESH) = 100 100 バッファー・プールの現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- IBMDEFAULTBP バッファー・プール・サイズ = -2 64981 Current and Recommended Values for System WLM Objects Description Current Value Recommended Value ------------------------------------------------------------------------------------------------- Work Action SYSMAPMANAGEDQUERIES Enabled = Y Y Work Action Set SYSDEFAULTUSERWAS Enabled = Y Y Work Class SYSMANAGEDQUERIES Timeroncost = 1.50000E+005 1.50000E+005 Threshold SYSDEFAULTCONCURRENT Enabled = N N Threshold SYSDEFAULTCONCURRENT Maxvalue = 12 10 DB210203I AUTOCONFIGURE が正常に完了しました。 変更の適用を選択した場合は、データベース・マネージャーまたはデータベース構成値が 変更されている可能性があります。 この種の適用した変更を有効にするには、インスタンスを再始動する必要があります。 また、新しい構成パラメーターを有効にした後は、新しい値が使用されるように、パッケ ージを再バインドすることができます。 1行目はデータベースへの接続です。 データベースへ接続しないと解析できません。 > db2 AUTOCONFIGURE APPLY NONE ってのが推奨値を表示するコマンドです。 NONE っていうオプションが「表示のみという」意味らしい。 3. 推奨値を設定する 前項のコマンドの NONE の部分を変更して > db2 AUTOCONFIGURE APPLY DB ONLY とすれば 『現行のデータベース・マネージャーの構成に基づいて、 データベース構成およびバッファー・プール設定の推奨値を表示します。 データベース構成およびバッファー・プール設定に対して推奨される変更を適用します。』とのことです。 これはまだやってみていません。 > db2 AUTOCONFIGURE APPLY DB AND DBM とすれば 『データベース・マネージャー構成、データベース構成、 およびバッファー・プール設定に対して推奨される変更を、表示および適用します。』とのことです。 やってみます。 データベースへの接続から書きますが > db2 CONNECT TO データベース名 > db2 AUTOCONFIGURE APPLY DB ONLY データベース・マネージャー構成の以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- エージェント・スタック・サイズ (AGENT_STACK_SZ) = 16 16 アプリケーション・サポート層ヒープ・サイズ (4KB) (ASLHEAPSZ) = 15 15 内部通信バッファーの数 (4KB) (FCM_NUM_BUFFERS) = AUTOMATIC(4096) AUTOMATIC(4096) パーティション内並列処理を有効にする (INTRA_PARALLEL) = NO NO 並列処理の最大照会度 (MAX_QUERYDEGREE) = 2 1 エージェント・プール・サイズ (NUM_POOLAGENTS) = AUTOMATIC(100) AUTOMATIC(100) プールにあるエージェントの初期化数 NUM_INITAGENTS) = 0 0 リクエスター入出力ブロック・サイズの最大数 (バイト) (RQRIOBLK) = 65535 65535 ソート・ヒープしきい値 (4KB) (SHEAPTHRES) = 0 0 データベース構成の以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- デフォルト・アプリケーション・ヒープ (4KB) (APPLHEAPSZ) = 256 256 カタログ・キャッシュ・サイズ (4KB) (CATALOGCACHE_SZ) = 300 1101 変更ページしきい値 (CHNGPGS_THRESH) = 80 80 データベース・ヒープ (4KB) (DBHEAP) = AUTOMATIC(14589) AUTOMATIC(10613) 並列処理の度合い (DFT_DEGREE) = 1 1 デフォルトの表スペース・エクステント・サイズ (ページ) (DFT_EXTENT_SZ) = 32 32 デフォルトのプリフェッチ・サイズ (ページ) (DFT_PREFETCH_SZ) = AUTOMATIC(32) AUTOMATIC(32) デフォルトの照会最適化クラス (DFT_QUERYOPT) = 5 5 ロック・リスト用最大ストレージ (4KB) (LOCKLIST) = AUTOMATIC(11712) AUTOMATIC(6200) ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 16384 1024 1 次ログ・ファイルの数 (LOGPRIMARY) = 24 10 2 次ログ・ファイル数 (LOGSECOND) = 14 12 アクティブ・アプリケーションの最大数 (MAXAPPLS) = AUTOMATIC(1281) AUTOMATIC(40) アプリケーションあたりのロック・リストのパーセント (MAXLOCKS) = AUTOMATIC(98) AUTOMATIC(60) 非同期ページ・クリーナー数 (NUM_IOCLEANERS) = AUTOMATIC(2) AUTOMATIC(2) 入出力サーバー数 (NUM_IOSERVERS) = AUTOMATIC(16) AUTOMATIC(20) パッケージ・キャッシュ・サイズ (4KB) (PCKCACHESZ) = AUTOMATIC(10251) AUTOMATIC(1533) ソート・リスト・ヒープ (4KB) (SORTHEAP) = AUTOMATIC(1000) AUTOMATIC(968) SQL ステートメント・ヒープ (4KB) (STMTHEAP) = AUTOMATIC(8192) AUTOMATIC(8192) 統計ヒープ・サイズ (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384) AUTOMATIC(4384) ユーティリティー・ヒープ・サイズ (4KB) (UTIL_HEAP_SZ) = AUTOMATIC(412000) AUTOMATIC(13054) セルフチューニング・メモリー (SELF_TUNING_MEM) = ON ON 自動 RUNSTATS (AUTO_RUNSTATS) = ON ON 共有ヒープのソート・ヒープしきい値 (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(5004) AUTOMATIC(19374) ログ・バッファー・サイズ (4KB) (LOGBUFSZ) = 9591 2149 デフォルトの表編成 (DFT_TABLE_ORG) = ROW ROW データベース・メモリーしきい値 (DB_MEM_THRESH) = 100 100 バッファー・プールの以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- IBMDEFAULTBP バッファー・プール・サイズ = -2 64981 Former and Applied Values for System WLM Objects Description Former Value Applied Value ------------------------------------------------------------------------------------------------- Work Action SYSMAPMANAGEDQUERIES Enabled = Y Y Work Action Set SYSDEFAULTUSERWAS Enabled = Y Y Work Class SYSMANAGEDQUERIES Timeroncost = 1.50000E+005 1.50000E+005 Threshold SYSDEFAULTCONCURRENT Enabled = N N Threshold SYSDEFAULTCONCURRENT Maxvalue = 12 10 DB210203I AUTOCONFIGURE が正常に完了しました。 変更の適用を選択した場合は、データベース・マネージャーまたはデータベース構成値が 変更されている可能性があります。 この種の適用した変更を有効にするには、インスタンスを再始動する必要があります。 また、新しい構成パラメーターを有効にした後は、新しい値が使用されるように、パッケ ージを再バインドすることができます。 ほぼ前項と同様の内容が「推奨値」の箇所が「適用値」となって表示されます。 実行後は、適用を反映するために、再起動します。 > db2 DISCONNECT データベース名 > db2stop > db2start 4. 実行した結果 これ、結構満足しています。 適用する前に1回に 30秒ほどかかっていた処理が 15秒以下で終了するようになりました。 5. 万能ではない あくまで推奨値ですので、万能ではありません。 わたしの環境では、前項までの設定を行ってもどうしても、テーブルをまとめてアップデートするときにトランザクションフルになることがあります。 これはトランザクションログのサイズを変えることで、対応しました。 わたしの場合、結構でかく 16384 の値を与えることで落ち着きました。 db2 update db cfg for データベース名 using LOGFILSIZ 16384 db2stop db2start
> db2 connect to データベース名 データベース接続情報 データベース・サーバー = DB2/NT64 10.5.6 SQL 許可 ID = 伏字 ローカル・データベース別名 = 伏字 > db2 AUTOCONFIGURE APPLY NONE データベース・マネージャー構成の現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- エージェント・スタック・サイズ (AGENT_STACK_SZ) = 16 16 アプリケーション・サポート層ヒープ・サイズ (4KB) (ASLHEAPSZ) = 15 15 内部通信バッファーの数 (4KB) (FCM_NUM_BUFFERS) = AUTOMATIC(4096) AUTOMATIC(4096) パーティション内並列処理を有効にする (INTRA_PARALLEL) = NO NO 並列処理の最大照会度 (MAX_QUERYDEGREE) = 2 1 エージェント・プール・サイズ (NUM_POOLAGENTS) = AUTOMATIC(100) AUTOMATIC(100) プールにあるエージェントの初期化数 NUM_INITAGENTS) = 0 0 リクエスター入出力ブロック・サイズの最大数 (バイト) (RQRIOBLK) = 65535 65535 ソート・ヒープしきい値 (4KB) (SHEAPTHRES) = 0 0 データベース構成の現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- デフォルト・アプリケーション・ヒープ (4KB) (APPLHEAPSZ) = 256 256 カタログ・キャッシュ・サイズ (4KB) (CATALOGCACHE_SZ) = 300 1101 変更ページしきい値 (CHNGPGS_THRESH) = 80 80 データベース・ヒープ (4KB) (DBHEAP) = AUTOMATIC(14589) AUTOMATIC(10613) 並列処理の度合い (DFT_DEGREE) = 1 1 デフォルトの表スペース・エクステント・サイズ (ページ) (DFT_EXTENT_SZ) = 32 32 デフォルトのプリフェッチ・サイズ (ページ) (DFT_PREFETCH_SZ) = AUTOMATIC(32) AUTOMATIC(32) デフォルトの照会最適化クラス (DFT_QUERYOPT) = 5 5 ロック・リスト用最大ストレージ (4KB) (LOCKLIST) = AUTOMATIC(11712) AUTOMATIC(6200) ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 16384 1024 1 次ログ・ファイルの数 (LOGPRIMARY) = 24 10 2 次ログ・ファイル数 (LOGSECOND) = 14 12 アクティブ・アプリケーションの最大数 (MAXAPPLS) = AUTOMATIC(1281) AUTOMATIC(40) アプリケーションあたりのロック・リストのパーセント (MAXLOCKS) = AUTOMATIC(98) AUTOMATIC(60) 非同期ページ・クリーナー数 (NUM_IOCLEANERS) = AUTOMATIC(2) AUTOMATIC(2) 入出力サーバー数 (NUM_IOSERVERS) = AUTOMATIC(16) AUTOMATIC(20) パッケージ・キャッシュ・サイズ (4KB) (PCKCACHESZ) = AUTOMATIC(10251) AUTOMATIC(1533) ソート・リスト・ヒープ (4KB) (SORTHEAP) = AUTOMATIC(1000) AUTOMATIC(968) SQL ステートメント・ヒープ (4KB) (STMTHEAP) = AUTOMATIC(8192) AUTOMATIC(8192) 統計ヒープ・サイズ (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384) AUTOMATIC(4384) ユーティリティー・ヒープ・サイズ (4KB) (UTIL_HEAP_SZ) = AUTOMATIC(412000) AUTOMATIC(13054) セルフチューニング・メモリー (SELF_TUNING_MEM) = ON ON 自動 RUNSTATS (AUTO_RUNSTATS) = ON ON 共有ヒープのソート・ヒープしきい値 (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(5004) AUTOMATIC(19374) ログ・バッファー・サイズ (4KB) (LOGBUFSZ) = 9591 2149 デフォルトの表編成 (DFT_TABLE_ORG) = ROW ROW データベース・メモリーしきい値 (DB_MEM_THRESH) = 100 100 バッファー・プールの現行値と推奨値 説明 パラメーター 現行値 推奨値 ------------------------------------------------------------------------------------------------- IBMDEFAULTBP バッファー・プール・サイズ = -2 64981 Current and Recommended Values for System WLM Objects Description Current Value Recommended Value ------------------------------------------------------------------------------------------------- Work Action SYSMAPMANAGEDQUERIES Enabled = Y Y Work Action Set SYSDEFAULTUSERWAS Enabled = Y Y Work Class SYSMANAGEDQUERIES Timeroncost = 1.50000E+005 1.50000E+005 Threshold SYSDEFAULTCONCURRENT Enabled = N N Threshold SYSDEFAULTCONCURRENT Maxvalue = 12 10 DB210203I AUTOCONFIGURE が正常に完了しました。 変更の適用を選択した場合は、データベース・マネージャーまたはデータベース構成値が 変更されている可能性があります。 この種の適用した変更を有効にするには、インスタンスを再始動する必要があります。 また、新しい構成パラメーターを有効にした後は、新しい値が使用されるように、パッケ ージを再バインドすることができます。
> db2 AUTOCONFIGURE APPLY NONE
> db2 AUTOCONFIGURE APPLY DB ONLY
> db2 AUTOCONFIGURE APPLY DB AND DBM
> db2 CONNECT TO データベース名 > db2 AUTOCONFIGURE APPLY DB ONLY データベース・マネージャー構成の以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- エージェント・スタック・サイズ (AGENT_STACK_SZ) = 16 16 アプリケーション・サポート層ヒープ・サイズ (4KB) (ASLHEAPSZ) = 15 15 内部通信バッファーの数 (4KB) (FCM_NUM_BUFFERS) = AUTOMATIC(4096) AUTOMATIC(4096) パーティション内並列処理を有効にする (INTRA_PARALLEL) = NO NO 並列処理の最大照会度 (MAX_QUERYDEGREE) = 2 1 エージェント・プール・サイズ (NUM_POOLAGENTS) = AUTOMATIC(100) AUTOMATIC(100) プールにあるエージェントの初期化数 NUM_INITAGENTS) = 0 0 リクエスター入出力ブロック・サイズの最大数 (バイト) (RQRIOBLK) = 65535 65535 ソート・ヒープしきい値 (4KB) (SHEAPTHRES) = 0 0 データベース構成の以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- デフォルト・アプリケーション・ヒープ (4KB) (APPLHEAPSZ) = 256 256 カタログ・キャッシュ・サイズ (4KB) (CATALOGCACHE_SZ) = 300 1101 変更ページしきい値 (CHNGPGS_THRESH) = 80 80 データベース・ヒープ (4KB) (DBHEAP) = AUTOMATIC(14589) AUTOMATIC(10613) 並列処理の度合い (DFT_DEGREE) = 1 1 デフォルトの表スペース・エクステント・サイズ (ページ) (DFT_EXTENT_SZ) = 32 32 デフォルトのプリフェッチ・サイズ (ページ) (DFT_PREFETCH_SZ) = AUTOMATIC(32) AUTOMATIC(32) デフォルトの照会最適化クラス (DFT_QUERYOPT) = 5 5 ロック・リスト用最大ストレージ (4KB) (LOCKLIST) = AUTOMATIC(11712) AUTOMATIC(6200) ログ・ファイルのサイズ (4KB) (LOGFILSIZ) = 16384 1024 1 次ログ・ファイルの数 (LOGPRIMARY) = 24 10 2 次ログ・ファイル数 (LOGSECOND) = 14 12 アクティブ・アプリケーションの最大数 (MAXAPPLS) = AUTOMATIC(1281) AUTOMATIC(40) アプリケーションあたりのロック・リストのパーセント (MAXLOCKS) = AUTOMATIC(98) AUTOMATIC(60) 非同期ページ・クリーナー数 (NUM_IOCLEANERS) = AUTOMATIC(2) AUTOMATIC(2) 入出力サーバー数 (NUM_IOSERVERS) = AUTOMATIC(16) AUTOMATIC(20) パッケージ・キャッシュ・サイズ (4KB) (PCKCACHESZ) = AUTOMATIC(10251) AUTOMATIC(1533) ソート・リスト・ヒープ (4KB) (SORTHEAP) = AUTOMATIC(1000) AUTOMATIC(968) SQL ステートメント・ヒープ (4KB) (STMTHEAP) = AUTOMATIC(8192) AUTOMATIC(8192) 統計ヒープ・サイズ (4KB) (STAT_HEAP_SZ) = AUTOMATIC(4384) AUTOMATIC(4384) ユーティリティー・ヒープ・サイズ (4KB) (UTIL_HEAP_SZ) = AUTOMATIC(412000) AUTOMATIC(13054) セルフチューニング・メモリー (SELF_TUNING_MEM) = ON ON 自動 RUNSTATS (AUTO_RUNSTATS) = ON ON 共有ヒープのソート・ヒープしきい値 (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(5004) AUTOMATIC(19374) ログ・バッファー・サイズ (4KB) (LOGBUFSZ) = 9591 2149 デフォルトの表編成 (DFT_TABLE_ORG) = ROW ROW データベース・メモリーしきい値 (DB_MEM_THRESH) = 100 100 バッファー・プールの以前の値と適用値 説明 パラメーター 以前の値 適用値 ------------------------------------------------------------------------------------------------- IBMDEFAULTBP バッファー・プール・サイズ = -2 64981 Former and Applied Values for System WLM Objects Description Former Value Applied Value ------------------------------------------------------------------------------------------------- Work Action SYSMAPMANAGEDQUERIES Enabled = Y Y Work Action Set SYSDEFAULTUSERWAS Enabled = Y Y Work Class SYSMANAGEDQUERIES Timeroncost = 1.50000E+005 1.50000E+005 Threshold SYSDEFAULTCONCURRENT Enabled = N N Threshold SYSDEFAULTCONCURRENT Maxvalue = 12 10 DB210203I AUTOCONFIGURE が正常に完了しました。 変更の適用を選択した場合は、データベース・マネージャーまたはデータベース構成値が 変更されている可能性があります。 この種の適用した変更を有効にするには、インスタンスを再始動する必要があります。 また、新しい構成パラメーターを有効にした後は、新しい値が使用されるように、パッケ ージを再バインドすることができます。
> db2 DISCONNECT データベース名 > db2stop > db2start
db2 update db cfg for データベース名 using LOGFILSIZ 16384 db2stop db2start