圧縮率の確認は、業務で利用するデータまたはそれに準ずるデータを用いて実際にデータを格納することで確認します。以降のディスク使用量の見積もりなどで利用するため、確認した圧縮率を控えておいてください。
圧縮率の確認は、圧縮前と圧縮後のDSIの使用量を比較することにより行います。
圧縮率の確認手順を以下に示します。
[すでに圧縮対象の表を運用している場合]
(1) 圧縮対象とするDSIのデータを抽出します。 ――― rdbunlsqlコマンド (2) (1)のDSIの使用状況を取得します。 ――― rdbudsiコマンド (fオプション) (3) (1)のDSIの定義に圧縮指定を追加して定義します。(別領域) ――― rdbddlexコマンド (4) (1)で抽出したデータを(3)で定義したDSIに格納します。 ――― rdbsloaderコマンド (5) (4)でデータを格納したDSIに対して、DSIの使用状況を ――― rdbudsiコマンド 取得します。 (fオプション) (6) (2)と(5)で取得した圧縮前後のDSI使用状況から圧縮率を計算します。――― 圧縮率の計算
[初めて定義する表の場合]
(1) 圧縮対象とするDSIのデータを用意します。 (2) (1)のDSIを圧縮指定なしで定義します。 (3) (1)で用意したデータを(2)で定義したDSIに格納します。 ――― rdbsloaderコマンド (4) (2)のDSIの使用状況を取得します。 ――― rdbudsiコマンド (fオプション) (5) (2)のDSIの定義に圧縮指定を追加して定義します。(別領域) ――― rdbddlexコマンド (6) (1)で用意したデータを(5)で定義したDSIに格納します。 ――― rdbsloaderコマンド (7) (6)でデータを格納したDSIに対して、DSIの使用状況を ――― rdbudsiコマンド 取得します。 (fオプション) (8) (4)と(7)で取得した圧縮前後のDSI使用状況から圧縮率を計算します。――― 圧縮率の計算
ポイント
圧縮対象とするDSIのデータについて
表全体のデータ傾向が同じであれば、格納されているデータの一部を取得して圧縮率の確認を行うことができます。この場合、圧縮率を求めるために500メガバイト以上のデータで確認してください。データの一部を抽出するにはrdbunlsqlコマンドで500メガバイト以上のデータを取得できるようなSQL文を指定してください。なお、全データを抽出するには、rdbunlコマンドを使用してください。
[データの一部を抽出するSQL文の例]
SELECT * FROM STOCKS.在庫表 WITH OPTION LIMIT(1000)
圧縮率 = 圧縮前のDSIのデータ格納に必要なページ数 / 圧縮後のDSIのデータ格納に必要なページ数 データ格納に必要なページ数 = A * (B / 100) * (C / 100) A:割付けページ数 B:割付けページ数に対してデータが格納されているページの割合(単位は%) C:使用中ページに対してデータが格納されている領域の割合(単位は%)
A、B、およびCの値は、rdbudsiコマンドの出力情報を利用します。
参照
rdbudsiコマンドの出力情報、およびコマンドの使用方法については、“コマンドリファレンス”を参照してください。SQL文については“SQLリファレンス”を参照してください。
以下に、圧縮率の確認手順の操作例およびDSIの定義例を示します。
圧縮率の確認手順の操作例
$ rdbunlsql -d 在庫管理DB -o -s "SELECT * FROM STOCKS.在庫表 WITH OPTION LIMIT(1000)" /home/rdb1/unlsql.dat $ rdbudsi -i 在庫管理DB.在庫表DSI -f $ rdbddlex -d 在庫管理DB /home/rdb1/create.dat (圧縮指定のDSIを定義) $ rdbsloader -mi -i 在庫管理DB.在庫表DSI2 -o /home/rdb1/unlsql.dat $ rdbudsi -i 在庫管理DB.在庫表DSI2 -f
圧縮指定のDSIの定義例
CREATE DSI 在庫表DSI2 DSO 在庫表DSO COMPRESS ALLOCATE DATA ON DBSPACE001 SIZE 500M ↑ 圧縮指定