create table dept (deptID char(8),...,doc XML inline length 10000)
1. CREATE/ALTER TABLEで表に対する「COMPRESS YES」の定義 2. オフライン再編成の実施
¾ 辞書を作成するために「REORG …KEEPDICTIONARY(もしくはRESETDICTIOANRY)」コマンドの実行
¾ 辞書作成フェーズを経て、表データの圧縮が行われる
圧縮率の見積もり
z INSPECTコマンドを使用
¾ 指定した表のデータのサンプルを基に辞書を作成し、この辞書を使用して圧縮テストを行うことで、圧縮率を 見積もる
z
使用方法1. 見積もり対象表に対してINSPECTコマンドを実行する
– $ db2 “inspect rowcompestimate table name t1 results keep t1_estimate.dmp”
2. $INSTANCE_HOME/sqllib/db2dumpディレクトリ配下に生成されたファイルに対して、DB2INSPFコマンドを実行する – $ db2inspf t1_estimate.dmp t1_estimate.out
考慮点
z XML列、LONG/LOB列、索引は圧縮の対象にならない
z
データ行圧縮機能を利用するためには、ESEかつ「Storage Optimization Feature」を導入する必要がある参考:データ行圧縮
Lempel Ziv アルゴリズム(LZ78,静的辞書圧縮法)を応用した圧 縮方法
特定のフレーズを辞書に登録し、辞書にあるデータを基に実 データを圧縮していく
A B U R A K A T A B U R A
圧縮前
‘ UR ’ 3
‘ BU ’ 2
‘ AB ’ 1
文字列 番号
■LZ78の例
1 3 A K A T A 2 R A
圧縮後 辞書を作成
圧縮前「13文字」あったのが、圧
縮後に「10文字」になっている
表スペースの見積もり
システム・カタログ表スペース
z
システム・カタログ表が使用する容量は、表スペースのタイプ(SMS or DMS)とエクステント・サイズによって 異なる。¾
DMSの場合、各表オブジェクトについて最低 2つのエクステントが割り当てられる。この未使用のスペースを
削減するために、カタログ表スペースをDMSで作成する場合は、エクステント・サイズ を小さくすることを(2 か ら
4 ページ) を検討する。
z
データベース作成時、デフォルトでは自動サイズ拡張が使用可能なDMS(ファイル)表スペースとして作成さ れる(初期サイズはDB2が自動決定)ため、表スペース容量が不足する前に自動的にサイズが拡張される。¾ ファイル・システムがいっぱいになると自動拡張が失敗するため、余裕をもって作成しておく。(通常、数百MB
~1GB程度あれば問題なし。)
¾ 自動ストレージ表スペースであるため、ALTER TABLESPACEによる拡張はできない。
ユーザー表スペース
z
既に決まっているページ・サイズと平均行サイズから、1ページに格納できる行数を算出z
予想される行数を格納するために必要となるページ数を算出¾
ROUND DOWN(ページ・サイズ/(論理レコード長)) = 1ページあたりの行数
¾
(レコード件数/1ページあたりの行数) * 安全率 = 必要ページ数
–
安全率:オーバーヘッド分、PCTFREEの分や、同じ表スペース内でREORGする場合なども考慮 一時表スペース
z
一番大きく使用すると思われるケースで検討するz
システム一時表スペース¾
JoinやSortを行うアプリケーションやREORG、LOADなどの運用次第で大きく変わる
¾
SMS表スペースの使用が望ましい
– DMSでは一時表の作成時に多くのオーバーヘッドがある
– SMSではディスク・スペースを動的に割り当てるが、DMSでは事前に割り当てられてしまうため、領域
を有効活用できない
z
ユーザー一時表スペース¾ 宣言済み一時表を使用する場合
¾ デフォルトの ユーザー一時表スペースはないため、作成する必要がある
z
一時表スペースの見積もりは最終的には事前に入念なテストを行って確認する解説
DMS表スペース -
必要な最小ページ値
表の再編成実行時に表スペースの名前を指定しない場合、再編成しようとする表を含む表スペースにその表の作業コピーを保管しま
す。一時表スペースを使って表を再編成する場合、一時表スペースのページ・サイズは表のページ・サイズと一致しなければなりません。
宣言済み一時表は、独自のユーザー一時表スペース・タイプの中にのみ作成されます。デフォルトのユーザー一時表スペースはありま
せん。一時表スペースの必要なスペースの量は照会および戻される表のサイズや照会アプリケーション、REORG、LOADなどの運用に依存 するため、正確に見積もることは難しいため、事前にテストで確認することが必要です。表スペースの作成 コンテナー・タグ 1 ページ/コンテナー 表スペースのヘッダー
スペース・マップ
オブジェクト表データ 1 エクステント
3 エクステント + 1 ページ 表スペース
メタ データ
表(オブジェクト)の作成
エクステント・マップ データのエクステント
5 エクステント + 1 ページ コンテナーで最小限必要なスペース =
(最初のオブジェクトを作成した時)
EXTENTSIZE = 32 ページなら、 5*32+1=161ページがコンテナーに必要 1 エクステント
1 エクステント 1 エクステント 1 エクステント
自動保守用表スペースの見積もり(V8.2以降)
自動保守用表スペース(SYSTOOLSPACE)
z V8.2の新機能、データベースの自動保守(自動統計収集および再編成)を使用する場合に自
動作成される表スペース
z 自動統計収集および再編成の作業データを、SYSTOOLSPACE表スペース中の表に格納する
z SYSTOOLS表スペース作成時、約700KB
z 通常、SYSTOOLSPACEに必要な容量は、データベース中の表の数に比例し、1つの表に対し
て約1KB として計算する
ログ領域の見積もり
アクティブ・ログ領域の見積もり
z 最低限必要なサイズ:(logprimary + logsecond) * (logfilsiz + 2 ) * 4096
¾ 循環ロギングの場合
–
上記の式で求めた値に余裕を持たせたサイズを用意する¾ アーカイブ・ロギングの場合
–
アーカイブ処理の失敗によりログ・ファイルが再利用されない場合や、ロールフォワード時にロ グがリトリーブされる領域を考慮し、余裕を持たせる(上記の式で求めた値の2倍程度)z アクティブ・ログの二重化を行う場合、2倍の容量が必要。
アーカイブ・ログ領域の見積もり
z 一日にアーカイブされるログ容量と保持期間を掛け合わせて必要な容量を算出する。更に、
アーカイブ・ログの削除や退避が行われなかった事態に備え、余裕を持たせて用意する。
z 複数パスへのアーカイブを行う場合(LOGARCHMETH1とLOGARCHMETH2を使用)、2倍の容
量が必要。(FAILARCHPATHを使用する場合は、その分の容量も必要。)
参考:ログ・アーカイブ機能(V8.2以降)
内容
z
アクティブ・ログのアーカイブ機能をDB2の標準機能として提供する¾ V8.1までのログのUSER EXITの機能の代替機能を提供する
z
アーカイブ方法を2つまで指定することができる¾ 最大で2つの別個のロケーションにアーカイブ・ログ・ファイルを保管できる
z
アーカイブが失敗した場合の代替ディレクトリーを指定できる¾ アーカイブ先が使用可能になると、ログ・ファイルは自動的に移動される