データベースのカラム統計情報の状況を見るツール (V5R2 以降)

データベースの統計情報というものが V5R2 以降でサポートされるようになりました。

このカラムの統計情報というものは、他のデータベースソフトのように特別な設定を行って実行させたり、明示的に実行させたりする必要はありません。OS/400 が自動的に必要だと判断して収集を行ってくれるようになっています。
その意味では、特別に考慮する必要はないのありません。ただし、ある一定区間動かすと、やはり自動的に統計が取得されるカラムが出てきます。どのカラムでそれが取られているかを確認したい、というのは自然な要求として出てきますよね。また、別のシステムにスキーマ (ライブラリー) を移動 (エクスポート) したような時に、やはり同じカラムに対して統計情報をはじめから取るようにセットしておきたい、という場面もあるでしょう。

V5R2 以降のデータベースについてのこういった新機能について、操作するための API はあります。ですが、直接操作するコマンドはありません。iSeries ナビゲーターから操作できる部分はありますが、それがすべての機能ではありません。つまりこの統計情報関係については、整理されているとは少なくとも今のところはちょっと言いにくいところがあります。
そこで、非公式ですがいろんなデータベース関係のツールが存在しています。(こちらでも紹介しています)

今回はそうしたツールの中から、上記のように、どんなカラムに統計情報が取得されているか、を知るため、また、より本来の目的としては、データベースを移動した場合に統計情報を一緒にもっていくために予め統計を作成させておくためのコマンド (これ自体が以前紹介したツールの一部です) を生成するためのツールを紹介してみたいと思います。

こうした、自動的に統計情報が取られているようなカラムは、選択に使用されたり、結合に使用され、しかもインデックスが存在しない、というようなものである場合が多々あります。
インデックスを作成する対象のカラムとして、この統計情報がシステムによって自動的に取られてしまったカラムというのは有力な候補になります。

以前紹介したツールが導入されていることが前提です。そちらの前提も、もちろん OS/400 は V5R2 以降ですね。


今回のツールはストアド・プロシージャの形をとっています。引数にライブラリー名を取ります。
指定されたライブラリー(= スキーマ) の中の各ファイル(= テーブル) について、統計情報の有無と、存在していた場合はその統計情報生成のためのコマンドを結果として出力します。

Stats script generation procedure にスクリプトが載っています。
これをコピーして、実行しましょう。
実行する SQL 文が長いので、STRSQL での対話型 SQL 実行画面では、コピー&ペーストが難しく、iSeries ナビゲーターの「SQL スクリプトの実行」を使用するのが適当でしょう。

SQL 実行環境のセットアップ

SQL 文を実行させる前に、「SQL スクリプトの実行」の実行環境をセットアップします。

「接続」メニューから、「JDBC セットアップ」を選択します。
「命名規則」が SQL になっていることを確認してください。

ツール作成用 SQL 文の実行

上記のページには載っていませんが、最初に Set Schema DBSTCMD と実行してください。前回のツールを利用しているために、それらを参照させる必要があります。また、一緒のライブラリーに作成しておいた方が便利でもあるでしょう。

最後に call dbst.stats_script('QSYS2') と実行してみて、結果を確認します。

作成されたツールの実行結果

こちらが call dbst.stats_script('QSYS2') の実行結果になります。

CRTDBFSTC というコマンドは DBSTCMD の中にあるコマンドで、以前紹介したツールの一部です。
このコマンドを実行すると、統計が取られるようになる、というわけですね。

考慮点

STRSQL の画面で CALL DBSTCMD/STATS_SCRIPT を実行しても、結果セットを見ることはできません。
結果を見るときは iSeries ナビゲーターの 「SQL スクリプトの実行」で実行してください。

[Top Pageに戻る]

Ads by TOK2