2009年6月27日土曜日

圧縮機能で遊んでみる

Unofficial DB2 blog であつ~く語られていた、DB2 V9.x からの圧縮機能で遊んでみました。

使用するサンプルデータは、日本郵便が提供する、全国事業所郵便番号を使用しました。
まぁこれが個人の住所なりのデータと想定します。

事業所の個別郵便番号(CSV形式)
ダウンロードはこちらです。
データは2万4千件程度、少ないけど、誰でも入手できるデータって事で。

さて、準備です。

データベースを作成します。

db2 create db test

圧縮効果を見やすくするために、表スペースを分けておきます。
4個くらい作っとくかな。

db2 create tablespace tbs1
db2 create tablespace tbs2
db2 create tablespace tbs3
db2 create tablespace tbs4

tbs1 表スペースに zip1表を作成
-------------------------------------
CREATE TABLE ZIP1 (
C1 varchar(5),
C2 varchar(200),
C3 varchar(400),
C4 varchar(20),
C5 varchar(50),
C6 varchar(50),
C7 varchar(250),
C8 varchar(7) NOT NULL,
C9 varchar(5),
C10 varchar(80),
C11 varchar(1),
C12 varchar(1),
C13 varchar(1)
) in tbs1;


tbs2 表スペースに zip2表(圧縮表)を作成
-------------------------------------
CREATE TABLE ZIP2 (
C1 varchar(5),
C2 varchar(200),
C3 varchar(400),
C4 varchar(20),
C5 varchar(50),
C6 varchar(50),
C7 varchar(250),
C8 varchar(7) NOT NULL,
C9 varchar(5),
C10 varchar(80),
C11 varchar(1),
C12 varchar(1),
C13 varchar(1)
) in tbs2 COMPRESS YES;
-------------------------------------

COMPRESS YES たったこれだけ!これだけです。シンプル~

で、次に、郵便のデータ(JIGYOSYO.CSV )をロードします。

db2 load from JIGYOSYO.CSV of del insert into zip1 nonrecoverable
db2 load from JIGYOSYO.CSV of del insert into zip2 nonrecoverable

できたー

さて、どれぐらい圧縮されたか見てみますか。

db2pd -db test -tcbstats all

TCB Table Information の 作成したテーブル名のDataSizeを見ます。
単位はページです。
------------------------------------------------------------------------
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x7640EA38 3 4 n/a 3 4 ZIP1 GOOFY Perm 974 0 0 0
0x76402138 4 4 n/a 4 4 ZIP2 GOOFY Perm 889 0 0 0
------------------------------------------------------------------------

974 → 889 おぉ!あれ?圧縮されてるけど、いまいちやね…4割は堅いって言ってたのに…

ちょっと解説
compress yes で表を作成して、初回、データが入ってくると、自動的に辞書を作成してくれる。
マニュアルの辞書の自動作成をみると、最初のデータで辞書を作成して、その辞書で圧縮をかけるみたい。
ってことわ、郵便番号データはソートされているから、最初のデータっていうと、北海道とかの住所などのデータで辞書が作成されているって訳ね。つまり、辞書に網羅性がないと。

じゃぁ、辞書を再作成するかってことで、再編成を実施。
辞書の再作成は、再編成でやります。

db2 REORG TABLE GOOFY.ZIP2 RESETDICTIONARY

さてさて、結果は。

もっかい db2pd -db test -tcbstats all

------------------------------------------------------------------------
TCB Table Information:
Address TbspaceID TableID PartID MasterTbs MasterTab TableName SchemaNm ObjClass DataSize LfSize LobSize XMLSize
0x7640EA38 3 4 n/a 3 4 ZIP1 GOOFY Perm 974 0 0 0
0x76402138 4 4 n/a 4 4 ZIP2 GOOFY Perm 488 0 0 0
------------------------------------------------------------------------
974 → 488  半分になりました~!

2009年6月24日水曜日

DB2への移行ツール

IBMさん、いいツールもってるじゃないですか。
DB2 V9.7と同時にこっそりと、データ移行ツールも公開されていますね。

IBM Data Movement Tool

以降対象のデータベースの種類も多いですね~
前回紹介した、DataStudioよりもいいんじゃないです?

Oracle
SQL Server
Sybase
MySQL
PostgreSQL
Ingres
DB2 for Linux, UNIX, and Windows
DB2 for z
MS Access

2009年6月21日日曜日

Optim Development Studio

なんだそれ?ってData Studioの後継です。
DB2の開発環境を提供します。そして、なんと、DB2のみならず、InformixやOracleにも対応してます。
将来的にはSQLServerも対応するんでしょうね~

ダウンロードはこちらから

DB2 V9.7 Express-C

V9.7のExpress-C (フリーエディション)がダウンロード可能になっています。

ダウンロードはこちらから

Windows版のクイックインストールガイドは以前、試しにやったのがあるんで、見てみてください。

Oracleの型やSQLは使えるのですが、PL/SQLのコンパイルとか、
SQL*Plus互換のツールのCLP Plusが使えないので(残念)ちょっと注意。

まぁでも使い勝手の良くなったDB2で遊んでやってください。

2009年6月19日金曜日

DB2 V9.7 オンラインマニュアル

いよいよDB2 V9.7のリリースです。
オンラインマニュアルが使用可能になっています。

DB2 V9.7 オンラインマニュアル

2009年6月15日月曜日

MustGather シリーズ

先週末のふーみんの問題判別編で紹介されていた、MustGather シリーズ。
とても有用なので、こちらでも紹介しておきます。

MustGatherでIBM技術情報検索ページを検索せよ!

ロックや接続に関する問題について、問題解決方法や情報取得方法が紹介されています。

MustGather: DB2 Locking Issues

MustGather: DB2 lock timeouts

MustGather: DB2 Deadlocks

MustGather: CLI Applications

MustGather: DB2 data corruption

MustGather: DB2 Client Connectivity

MustGather: Collecting Diagnostics for DB2 Compiler Issues

2009年6月11日木曜日

トラバ

機能を付けてみたんだけど、さっぱりわからん。
わからんままやってしまってます。
ホントに動くのでしょうか…

bloggerでトラバは鬼門のようです。

「とらば」を変換したら「TrackBack」と出たよ。さすがATOK。

第75回 実践!!トラブル発生時の対処法 ― こんな時どうする?【問題判別中級者編】

明日、トラブル対応、問題判別の勉強会をやります。
場所は品川ですので、奮ってご参加くださいませ~

申込みはこちらから

しかし、長期間放置プレイしておりまして、誠に申し訳ありません、
ネタがないわけではないのですが、もうちょっと頑張ります。

そして、いよいよ来週はV9.7がリリースされます。
こちらでも少しずつ扱っていきますね。