■パフォーマンス
DB2UDBのパフォーマンスに関する機能要素は、非常に多岐にわたるので主要なものを表2にまとめた。紙面スペースの関係もあるので表中のいくつかに絞り補足説明しておこう。
機能要素 | 概要 |
---|---|
SMP並列処理 | マルチプロセッサによる処理の割当 |
パラレルI/O | データ格納コンテナの分散と並列処理 |
非同期I/O | I/O処理プロセスが非同期に動作 |
バッファプール | テーブルやインデックスをオンメモリロードで実行 |
パーティション間並列処理 | パーティション分割して別々に同時処理 |
レコードインデックス | ユニーク/ビットマップ・インデックス |
ブロックインデックス | レコード集合に対するインデックス指定 |
多次元クラスタリング | 多次元レンジパーティショニング処理 |
分散カタログキャッシュ | カタログ情報を全ノードにキャッシュ |
マテリアライズ照会 | 自動集計テーブルの定義 |
オンラインインデックス再編成 | シャドウによるフラグメント処理 |
オンラインテーブル再編成 | テーブル領域のフラグメント解消 |
・パラレルI/O
ページ領域の集合であるエクステントを、複数のコンテナに作成することでディスクへのI/O処理を分散する。コンテナを異なるディスクに分散することで、I/O処理を並列化し、パフォーマンスが向上する
・パーティション間並列処理
区画(パーティション)を分割して設計を行い、パーティションで稼動するDB2UDBをインスタンスレベル、さらには別の筐体で動作させ、スケーラビリティを確保し、総合的なパフォーマンスをアップさせる
・レコードインデックス
通常のユニーク、複合インデックスの作成だが、DB2ではビットマップインデックスをオプティマイザーが自動作成する
・ブロックインデックス
レコードを集合化したブロックに対してインデックスを作成する。住所や年月日など、限られた範囲内でのデータによってグループ化しやすいレコード構造の場合に有効。相対的にインデックス対象への絞り込みが速くなる。
・多次元クラスタリング
ブロックインデックスを多次元化したものと考えれば理解しやすい。データウェアハウスなどで四半期ごとや地域ごとのクエリ用インデックスを多次元的に作成する
・分散カタログキャッシュ
システム情報が格納されたカタログデータを、すべてのノードにキャッシュとして配置する。
・マテリアライズ照会
集計テーブル用のデータセットを自動で格納する仕組みにより、複合クエリの発生を抑制し、高速化を実現する
最後に
日本の商用RDBMS市場をUNIX/Linuxという視点で見ると、OracleとDB2の一騎討ちの様相を呈している。この分野では、ハイエンドに強いDB2、ミッドレンジがOracleというのが現在の趨勢だ。そんな中、オープンソースのRDBMSがボトムエンドからどのレベルまでカバーできるか? というのも興味深いところだ。