第6章 db2の特徴的な機能紹介 - ibmdatabase partitioning...

50
第6章 DB2の特徴的な機能紹介 本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布されるものです。 この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用する環境に統合する 使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べられていますが、他のところで同じまたは同 様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使用先は、自己の責任において行う必要があります。 © Copyright IBM Japan Co., Ltd. 2009 <2009年12月>

Upload: others

Post on 19-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

第6章 DB2の特徴的な機能紹介

本書に含まれている情報は、正式なIBMのテストを受けていません。また、明記にしろ、暗黙的にしろ、なんらの保証もなしに配布されるものです。

この情報の使用またはこれらの技術の実施は、いずれも、使用先の責任において行われるべきものであり、それらを評価し、実際に使用する環境に統合する使用先の判断に依存しています。それぞれの項目は、ある特定の状態において正確であることがIBMによって調べられていますが、他のところで同じまたは同様の結果が得られる保証はありません。これらの技術を自身の環境に適用することを試みる使用先は、自己の責任において行う必要があります。

© Copyright IBM Japan Co., Ltd. 2009

<2009年12月>

Page 2: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

内容

• Workload Manager

• パーティショニング機能

• 行圧縮機能

• pureXML

© 2009 IBM Corporation2

• オンラインでの表移動

Page 3: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

Workload Manager

© 2009 IBM Corporation3

Page 4: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

WorkloadWorkloadManagerManagerWorkloadWorkloadManagerManager

DB2 Workload Manager (WLM) 概要

ワークロード識別・分類 目的ごとに

レポートSERVICE CLASS

• きめ細かいワークロードの識別・分類

• 閾値による制御 (コスト、実行並行度、実行時間 etc)

• 実行優先度の制御

• 目的に応じたレポーティング

DB2エンジンに組み込まれた機能

© 2009 IBM Corporation4

暴走クエリーの閾値制御

実行優先度の制御

レポートWORKLOAD

CLASS

WORKLOAD

Page 5: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

SERVICE CLASS

1.ワークロード分類し、サービスクラスに誘導

WORKLOAD

アクティビティーの分類と誘導 アクティビティー実行環境

• WORKLOAD• 接続ユーザー/アプリケーション名などによりアクティビティーを分類

• SERVICECLASSに誘導

• SERVICE CLASS• 分類されたアクティビティーが実行される環境

© 2009 IBM Corporation5

CLASS

WL_HIGH

WL_LOW

DB2

SC_HIGH

SC_LOW

APPL1

接続USER=USER10

APPL2

接続USER=USER20

優先度を下げる

優先度を上げる

個別にレポート

個別にしきい値監視

WORKLOAD

Page 6: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

2.閾値によるワークロードの制御

アクティビティー実行開始

アクティビティー実行終了

③Reactive:反応的しきい

例) 見積もりコストが10万を超えるアクティビティーは実行しない①Predictive:

予測的しきい値の評価

・ESTIMATEDCOST

© 2009 IBM Corporation6

②Proactive:並列度のしきい値評価

アクティビティー実行の要求

反応的しきい値の評価(進行中)

例)異常に長い時間がかかっている処理や、検索結果行が膨大な処理を検出し停止する

例) アクティビティの並列度が10を超えた場合はキューに待

機させる。

・TOTALSCPARTITIONCONNECTIONS・CONCURRENTDBCOORDACTIVITIES・CONCURRENTWORKLOADOCCURRENCES

・TOTALDBPARTITIONCONNECTIONS・CONCURRENTWORKLOADACTIVITIES・SQLROWSRETURNED・ACTIVITYTOTALTIME・CONNECTIONIDLETIME・SQLTEMPSPACE

Page 7: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

しきい値 説明

Predictive (予測的) ESTIMATEDSQLCOST 見積もりコスト

Proactive(並列度) CONCURRENTDBCOORDACTIVITIES

同時並行実行数

QUEUEDACTIVITIES キュー待機

Reactive(反応的) SQLROWSRETURNED 結果行数

ACTIVITYTOTALTIME 合計実行時間

3.設定可能なしきい値の種類V9.7

V9.7

© 2009 IBM Corporation7

ACTIVITYTOTALTIMECONNECTIONIDLETIME 接続アイドル時間

SQLTEMPSPACE 一時表スペース使用量

AGGSQLTEMPSPACE 一時表スペース使用量

(サービスクラス毎)

CPUTIME CPU時間

SQLROWSREAD 読み込み行数

CPUTIMEINSC CPU時間

(REMAP ACTIVITY用)

SQLROWSREADINSC 読み込み行数

(REMAP ACTIVITY用)

V9.7 NEW!

例えば「1000行以上の大量検索は許可しない」という制限が可能に。

Page 8: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

4.SERVICE CLASSによる実行優先度の調整

• サービスクラスは、作業グループに対するユニークな実行環境

• それぞれのサービスクラスに異なるリソース優先度を割り当てる

• サービスクラスで利用可能なリソースの調整

• CPU優先度制御 (AGENT PRIORITY)• AIX WLMとの連携による詳細な管理が可能

• I/Oプリフェチ優先度制御(PREFETCH PRIORITY)• 設定値: HIGH, MEDIUM, LOW AGENT PRIORITY,

© 2009 IBM Corporation8

• 設定値: HIGH, MEDIUM, LOW

WL_HIGH

SC_HIGH

SC_LOW

WORKLOAD SERVICE CLASS

WL_LOW

優先度の高い処理

優先度の低い処理

優先度の高いサービスクラス

で実行

優先度の低いサービスクラスで実行

接続ユーザーなどで分類

AGENT PRIORITY,PREFETCH PRIORITYを設定する。

Page 9: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

パーティショニング機能

© 2009 IBM Corporation9

Page 10: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• アクセス効率向上

• パーティションDB• データベースの区分化による性能向上

• クエリーを複数CPUにより並列処理

• データ分割による効率化

• スケーラブルな拡張性

• 可用性向上(パーティションレベル)

DB2機能によるアクセス効率の向上

データベース

データ ログ データ ログ データ ログ データ ログ

履歴表A

© 2009 IBM Corporation10

• パーティション表

• 表の区分化による性能向上

• 特定レンジのみアクセス

• データの高速追加/削除

• 可用性向上(表スペースレベル)

• マルチディメンション・クラスタリング(MDC)表

• 表のクラスター化による性能向上

• ブロックレベルでのアクセス

• ブロック索引による効率化

• データの高速追加/削除

履歴表A

JAN区分のデタッチ

MAY

MAY区分のアタッチ

JAN FEB MAR APR

セル

Page 11: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

ハイ・パフォーマンスを支える並列処理

Database Partitioning Feature(DPF)による並列処理

アプリケーションは意識することなく、複数サーバーによるスケールアウトにより、並列処理を実現します。

• データベースの区分を持つサーバー群

• 全体で1つのデータベース

• パラレル・オプティマイザーと高速通信経路で接続

• ハッシングにより均等にデータ分散

アプリケーションDB2クライアント

どの区画に接続しても同じ結果が返ってきます

1000区分までのスケーラビリティー1000区分までのスケーラビリティー

透過的データアクセス透過的データアクセス

アプリケーションDB2クライアント

100TBのDBも100区分で1TBのDB設計と同じ

© 2009 IBM Corporation11

単一データベース

データベース区画1

CPUCPU

メモリー

データ

・・・

データベース区画2

CPUCPU

メモリー

データ

データベース区画3

CPUCPU

メモリー

データ

データベース区画N

CPUCPU

メモリー

データ

データベース区画N-1

CPUCPU

メモリー

データ

DB2クライアント同じ結果が返ってきます

DB2クライアント

Page 12: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

ハイ・パフォーマンスを支えるパーティション表

• ひとつの表を複数の区分に分割

• 古い区分を高速にロールアウト (区分のデタッチ)

• 既存データはオンライン状態で、新しい区分をロールイン (区分のアタッチ)

• 区分単位でのアクセス性能向上

• 各区分は異なる表スペースに配置可能

© 2009 IBM Corporation12

Jan Feb Mar Apr

過去のデータはまとめて瞬時に

切り離し

新規データを個別にLOADしてから区分を取り

付けDETACH ATTACH

日付などのレンジで区分に分割し整理するパーティション表

Jan

売上履歴表

読みたい区分のみにアクセス

Page 13: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

ハイ・パフォーマンスを支える多次元分析機能

• 多次元クラスタリング(MDC)とは

• 複数属性の値によってデータを分類して自動的に格納する機能

• 単一属性のクラスタでは実現できなかった「2008年9月」の「DB2」の「東京」というような複数の属性をもつクラスタ

• 次元別検索のパフォーマンス向上

• データ並べ替えを目的とした再編成不要

• 削除のパフォーマンスアップ(ブロック削除が可能)

• 索引のサイズが小さい(索引はブロック・ベース(BID))

サマリー表作成など集計バッチにも効果

© 2009 IBM Corporation13

セル

ブロック

20082008年年99月月, , 東京東京, , DB2DB2

20082008年年99月月, , 東京東京, , DB2DB2

20082008年年99月月, , 大阪大阪, ,

WebspherWebspheree

20082008年年99月月, , 大阪大阪, ,

WebspherWebspheree

20082008年年88月月, , 大阪大阪, ,

WebspherWebspheree

20082008年年88月月, , 東京東京,,DB2DB2

年月

次元

製品

次元

地域

次元レコード

• BID• レコードベースの通常の索引も同時に作成可能

作成SQL例:CREATE TABLE MDC1 (Date DATE,地域 CHAR(10),製品 VARCHAR(10), 年月 generated always as (INTEGER(Date)/100), ... )

ORGANIZE BY DIMENSIONS (年月, 地域, 製品)

列名指定のみでメンテナンス不要

Page 14: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

通常の表に保管されたデータ

© 2009 IBM Corporation14

必要な行へのアクセスのために大

量の不要な行も読み込む

ひとつのクエリーを処理するのはひ

とつのCPUのみ。

Page 15: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

複数パーティションにハッシュ分割(DBパーティション)

P 1 P 2 P 3

© 2009 IBM Corporation15

ひとつのクエリーを複数のCPUを

使って並列に処理することができる

Page 16: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

複数パーティションにハッシュ分割して並列処理

P 1 P 2 P 3

© 2009 IBM Corporation16

依然として不要なI/Oは存在。

可用性を損なうことなく大量

データの入れ替えを行いたい。

Page 17: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

データをレンジ分割して保存(パーティション表)

P 1

Jan

P 2 P 3

© 2009 IBM Corporation17

Feb

Mar条件に合致したパーティショ

ンのみを参照すればよい

パーティションの高速削除と

追加が可能

Page 18: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

データをレンジ分割して保存(パーティション表)

P 1

Jan

P 2 P 3

© 2009 IBM Corporation18

Feb

Mar

未だ不要なI/Oが残っている

Page 19: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

各行をブロックに整理して保管(多次元クラスター表)

P 1

Jan

P 2 P 3

© 2009 IBM Corporation19

Feb

Mar

同じ値を持った行同士を同じ

ブロックに集めて保管。

必要な行を取り出すための

I/Oが 小限で済む

Page 20: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

各行をブロックに整理して保管(多次元クラスター表)

P 1

Jan

P 2 P 3

© 2009 IBM Corporation20

Feb

Marこれ以上I/Oの効率を上げるこ

とはできないか???

Page 21: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

各ブロックに格納される行数を増やす(行圧縮)

P 1

Jan

P 2 P 3

© 2009 IBM Corporation21

Feb

Mar

各ブロックにより多くの行を保管

し、ディスク容量の削減が可能。

必要な行を取り出すためのI/O

がさらに少なくなる。

Page 22: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

ブランク・ページ

© 2009 IBM Corporation22

ブランク・ページ

Page 23: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

行圧縮機能

© 2009 IBM Corporation23

Page 24: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• V8 GA~

• テーブル作成時の「VALUE COMPRESSION」

• V8 FixPak 4~

• バックアップイメージの圧縮

• V9.1• 表の行圧縮 (Row Compression)の登場

• V9.5

DB2でのデータ圧縮技術の歴史

© 2009 IBM Corporation24

• V9.5• 辞書メンテナンスの機能強化 (ADC)

• V9.7• 索引の圧縮

• 一時表の圧縮

• XML(XDA)の圧縮

• インラインLOBデータの圧縮

業界ではDB2のみ

Page 25: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

圧縮することのメリット

ディスク使用量の削減

特に、繰り返しデータがあるような場合に効果的

バッファー・プールの使用率向上

より多くのデータが圧縮された状態でバッファープールに乗るため、バッファープールヒット率の向上が期待できる

© Copyright IBM Japan Systems Engineering Co., Ltd. 200925

ディスクへの読み書き量が削減できるため、特にI/Oネックのシステムにはパフォーマンス向上の効果がある

ログ・ファイルへの書き出し量が削減される

Page 26: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

行圧縮機能の概要

• 辞書を使った行レベルのデータ圧縮 (V9.1~)

• 辞書には、レコードにある特定のパターンが記録される

• ディスク使用量の削減

• より多くのデータが圧縮された状態でバッファープールに乗るため、バッファープールヒット率の向上が期待できる

• ディスクへの読み書き量が削減できるため、特にI/Oネックのシステムにはパフォーマンス向上の効果がある

© 2009 IBM Corporation26

名前 部署 給与 都道府県 区・市 郵便番号

Fred 500 10000 東京都 港区 24355

John 500 20000 東京都 港区 24355

01 500

02 東京都, 港区,24355

… …

Fred 500 10000 東京都 港区 24355 John 500 20000 東京都 港区 24355 …

ディクショナリー

Fred (01) 10000 (02) John (01) 20000 (02) …

Page 27: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

索引圧縮の使用方法

• 索引圧縮を使用する場合

• CREATE INDEX、ALTER INDEXのCOMPRESS YESオプション使用

CREATE INDEX X01 ON T01 (C01) COMPRESS YES

CREATE INDEX X02 ON T02 (C02)ALTER INDEX X02 COMPRESS YESREORG INDEXES ALL FOR TABLE T02

© 2009 IBM Corporation27

• 索引圧縮の解除方法

• ALTER INDEXのCOMPRESS NOオプション

• ALTER後のREORG INDEXESするまでは、圧縮された状態で保持される

ALTER INDEX X02 COMPRESS NOREORG INDEXES ALL FOR TABLE T02

Page 28: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• objecttype• オブジェクトタイプ(表:’T’ or NULL、索引:’I’ )

• objectschema• オブジェクトのスキーマ名

新しい表関数①(ADMIN_GET_INDEX_COMPRESS_INFO)

>>-ADMIN_GET_INDEX_COMPRESS_INFO--(--objecttype--,--objectschema--,--objectname--,-->

>--dbpartitionnum--,--datapartitionid--)-----------------------><

© 2009 IBM Corporation28

• オブジェクトのスキーマ名

• objectname• オブジェクト名(case-sensitive)

• dbpartitionnum• データベース・パーティション番号(非データベース・パーティション環境:’-2’ or

NULL)• datapartitionid

• データ・パーティション番号(非データ・パーティション環境:’-2’ or ‘0’or NULL)

• 圧縮属性の確認、および圧縮によって節約できるリーフページ数の見積もりなどが可能

Page 29: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• Objecttype

• オブジェクトタイプ(表:’T’ or NULL、索引:’I’ )• Objectschema

• オブジェクトスキーマ

新しい表関数②(ADMIN_GET_INDEX_INFO)

>>-ADMIN_GET_INDEX_INFO--(--objecttype--,,--objectschema--,--objectname--)--------------------------><

© 2009 IBM Corporation29

• オブジェクトスキーマ

• Objectname

• オブジェクト名

• 索引毎の圧縮情報、およびその表に定義されている全索引に対して必要なサイズなどを確認可能

Page 30: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

索引圧縮の条件

圧縮表 非圧縮表

CREATE INDEXCOMPRESS YES

圧縮 圧縮

CREATE INDEXCOMPRESS NO

非圧縮 非圧縮

ALTER INDEX COMPRESS YES

圧縮 圧縮

© 2009 IBM Corporation30

COMPRESS YES

ALTER INDEX COMPRESS NO

非圧縮 非圧縮

CREATE INDEX COMPRESS指定なし

圧縮 非圧縮

以前のリリースよりマイグレーションされたDB

非圧縮 非圧縮

※表の圧縮属性を変更しても、変更時点で既に存在している索引の圧縮属性は変更されない

Page 31: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

(参考)圧縮表のパフォーマンスとCPUへの負荷

圧縮表(表圧縮+圧縮索引(1個)) VS 非圧縮表

2000

3000

4000

5000

6000

7000

8000

9000

トラ

ンザ

クシ

ョン

/秒

圧縮表

非圧縮表

CPU(user)1 2.62 2.63 2.64 10.55 2.2

CPU(user)6 1.6

Update(索引キー列)

索引圧縮+表圧縮

Select

Insert

SelectUpdate(索引キー列以外)

Delete索引圧縮なし+表圧縮なし

© 2009 IBM Corporation31

圧縮表: IndexBPヒット率(90.5~100%),DataBPヒット率(85.6~99.9%)

非圧縮表: IndexBPヒット率(86.2~100%),DataBPヒット率(73.9~99.7%)

0

1000

SelectUpdate(索引キー列以外)

Update(索引キー列)

InsertDelete

トラ

ンザ

クシ

ョン

3分間、10userで計測

圧縮により、バッファープールヒット率が向上し、パフォーマンスも向上した

Select/Insert/Update/Deleteのすべてにおいて、より有効にCPUが使用されるようになった

6 1.67 1.68 1.69 6.7

10 1.7

Select

Delete

Update(索引キー列以外)Update(索引キー列)Insert

Page 32: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

使用上の考慮点

• MDCブロック索引, カタログ表の索引, index specifications, XMLメタ索引, XMLパス索引は圧縮対象外

• 圧縮表に対して新しく作成する索引は、明示的にCOMPRESS NOを指定しない限り、圧縮索引となる

• 一度圧縮索引として作成されたものを非圧縮に戻したい場合には、COMPRESS NOを指定してALTER INDEXを実行し、さらに索引再編成を行う

• 非圧縮表に対して新しく作成する索引は、明示的にCOMPRESS YESを指定しない限

© 2009 IBM Corporation32

• 非圧縮表に対して新しく作成する索引は、明示的にCOMPRESS YESを指定しない限り、非圧縮索引となる

• 一度非圧縮索引として作成されたものを圧縮したい場合には、COMPRESS YESを指定してALTER INDEXを実行し、さらに索引の再編成を行う

• V9.1、V9.5のデータベースをV9.7に移行しても、索引圧縮は行われない

• 索引圧縮を使用するには、ALTER INDEX・・・COMPRESS YES、およびREORG INDEXを実行する

Page 33: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

DB2 pureXML機能概要

© 2009 IBM Corporation33

Page 34: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

DB2 pureXMLの歩み

V9.5

pureXML機能強化

V9.7

XMLウェアハウスへ

DPF

MDC

パーティション表

V9.7

XMLウェアハウスへ

DPF

MDC

パーティション表

© 2009 IBM Corporation34

V9.1

pureXMLサポート

XML基本機能

XML列/索引

XQuery

各種ユーティリティ

pureXML機能強化

Inline格納

部分更新

XSLT

スキーマエボリューション

Replication

Load

パーティション表

XDA圧縮

オンライン索引再編成/索引作成

UDF

Global Temporary Table

複数文書のdecompositoin

parse/validationの詳細エラー

パーティション表

XDA圧縮

オンライン索引再編成/索引作成

UDF

Global Temporary Table

複数文書のdecompositoin

parse/validationの詳細エラー

Page 35: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

insert into dept values (1,……, ’<dept><emp>夏目漱石</emp></dept>’)

• DB2のpureXML機能では、XMLデータを保持するための「XMLデータ型」を提供する

• XMLデータ型はリレーショナル表の中に定義し、レコードの中の1カラムとして取り扱う

• XMLデータは分解(Parse)されDOMに似た階層型のフォーマット(XDM)で格納される

• 照会時にはParseしない

• XML格納方法は2通り - inline格納/XDA(XML Data Area)格納

DB2におけるXMLデータの格納

© 2009 IBM Corporation35

deptID … deptdoc

1 … <dept> …

<emp>夏目漱石</emp>

</dept>

… … …

inline格納時のdept表の物理構造

リレーショナル

dept表の論理構造

deptID deptdoc…

create table dept (deptID int,…, deptdoc xml inline length 10000 )

create table dept(deptID int,…, deptdoc xml)

1

XML

XDA格納時のdept表の物理構造

XMLリレーショナル

XMLデータ

XDA(XML Data Area)deptID deptdoc

XML記述子regionsindex

inline格納する表の定義 XDA格納する表の定義

LOBと類似だがbufferpoolを使用

Page 36: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XML照会の2つの方法

DB2 SERVER

CLIENT SQL/XML

XQueryDB2 Engine

XML

RelationalInterface Relational

XML

DB2 Storage:

DB2 Client /Customer Client Application

© 2009 IBM Corporation36

• XQueryを主言語とする

• W3C XQuery標準で定義

• V9新機能

• XQueryにSQLを組み込むことも可能

• SQLを主言語とする

• SQL/XML(SQLのXML用関数)の使用

• SQL標準で定義

• V8からサポート、V9で拡張

• SQLにXQueryを組み込むことができる

XMLInterface

XML

Page 37: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• XMLカラムに対してユーザーが索引を作成

• 索引対象は、要素、属性

• XML索引は、CREATE INDEXステートメント中xmlpattern(XPath)を記述して指定

• XMLのデータ型はSQLデータ型にマップされる。

• XML索引を使って検索を実行

• ANDing/ORing

XML索引

CREATE INDEX empindex ON company(docs)GENERATE KEY USING XMLPATTERN '/company/emp/@id' AS SQL DOUBLE

COMPANYDOC (XML EMPINDEX索引

© 2009 IBM Corporation37

COMPANYDOC (XMLデータタイプ列)

<company name="Company1"><emp id="31201" salary="60000" gender="Female">

<name><first>Laura </first><last>Brown</last></name><dept id="M25">Finance</dept>

</emp></company><company name="Company2">

<emp id="31664" salary="60000" gender="Male"><name><first>Chris</first><last>Murphy</last></name><dept id="M55">Marketing</dept>

</emp><emp id="42366" salary="50000" gender="Female">

<name><first>Nicole</first><last>Murphy</last></name>略

1row

1row

COMPANY表EMPINDEX索引

COMPANYDOC(DOUBLE)

312013166442366

DOUBLE型の索引が作成される

Page 38: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

• DB2は、XMLスキーマによるXMLインスタンスの妥当性検査をサポートする

• XMLスキーマをXSR (XML Schema Repository)へ登録する必要がある

• DB2では、妥当性検査はXMLインスタンス単位で行う

• 妥当性検査を行うかどうか、どのXMLスキーマを使用するかは任意

• 1つのカラムに妥当性検査済みのXMLインスタンスと、検査されていないXMLインスタンスが混在しても良い

• 1つのカラムに異なるXMLスキーマで妥当性検査されたXMLインスタンスが混在しても

XMLスキーマ対応

© 2009 IBM Corporation38

• 1つのカラムに異なるXMLスキーマで妥当性検査されたXMLインスタンスが混在しても良い

• INSERT,IMPORT, (UPDATE)によるXMLインスタンスの投入時に実施可能

DB2システム・カタログ

XSR

XML文書

ValidateXMLSchema

Validな(妥当な)

XML文書

INSER

T

XMLSchema 登録

Page 39: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

pureXML in DB2 V9.7

DB2 XML Support

DPF

20082008年年99月月, , 東京東京, , DB2DB2

20082008年年99月月, , 東京東京, , DB2DB2 20082008年年

99月月, , 大大阪阪, ,

20082008年年99月月, , 大大

阪阪, ,

20082008年年88月月, , 大大

阪阪, , WebsWebs

20082008年年88月月, , 東東

京京,,DB2DB2

MDC XMLデータ

ウェアハウス

© 2009 IBM Corporation39

阪阪, , WebspWebsp

herehere

阪阪, , WebsWebspherephere

WebsWebspherephere

Jan

Feb

Mar

Apr

パーティション表

圧縮

ウェアハウス

大量のXMLデータ

文書サイズが大きいXMLデータ

•マニュアル

•報告書/申請書

•条例/省令

•カルテ など

文書系XMLデータの

管理/加工/検索

Page 40: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XML表の作成 – DPFサポート

• DPF環境でもXML列を含む表の作成が可能

• DPF環境の既存の表にALTER TABLEでXML列の追加が可能

• どのパーティションからでもXSRオブジェクト(XMLスキーマなど)の登録/検索が可能

• SQL/XML, XQueryのパラレル実行可能

• パラレルのLOADが可能

• DPF環境でもXML列を含む表の作成が可能

• DPF環境の既存の表にALTER TABLEでXML列の追加が可能

• どのパーティションからでもXSRオブジェクト(XMLスキーマなど)の登録/検索が可能

• SQL/XML, XQueryのパラレル実行可能

• パラレルのLOADが可能CREATE TABLE table1 (

© 2009 IBM Corporation40

• 制約

• XML列をdistribution keyにすることはできない

• distribution keyを持つXML表に対しuniqueなXML索引を持てない

• V9.1/V9.5のXMLフォーマットを持つ表はDPF環境に分散できない

=> 表の再作成またはADMIN_MOVE_TABLEによる移行が必要

CREATE TABLE table1 (col1 int, col2 xml,DISTRIBUTE BY HASH(col1))

Page 41: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XML表の作成 – MDCサポート

• XML列を含むMDC表の作成が可能

• MDC表にALTER TABLEでXML列の追加が可能

• MDCブロック索引と、XML索引を合わせて使用することが可能

• XML列を含むMDC表の作成が可能

• MDC表にALTER TABLEでXML列の追加が可能

• MDCブロック索引と、XML索引を合わせて使用することが可能

CREATE TABLE MDC1 (製品 VARCHAR(10), 製品明細 XML)

© 2009 IBM Corporation41

• 制約

• XML列を次元(ORGANIZE BY節)に指定することはできない

製品明細 XML) ORGANIZE BY DIMENSIONS (製品)

Page 42: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XML表の作成 – パーティション表サポート

• XML列を含む表をパーティション表にすることが可能

• パーティション表に対してALTER TABLEでXML列の追加が可能

• XDA用の表スペースは、パーティション表の表スペースに置くことも、別表スペースに置くことも可能

• XML列を含む表をパーティション表にすることが可能

• パーティション表に対してALTER TABLEでXML列の追加が可能

• XDA用の表スペースは、パーティション表の表スペースに置くことも、別表スペースに置くことも可能

CREATE TABLE t1(c1 INT, c2 INT, c3 XML)IN tbsp1, tbsp2, tbsp3LONG IN tbsp6, tbsp7, tbsp8

© 2009 IBM Corporation42

• 制約

• XML列をpartition keyにすることはできない

• XML索引はpartitioned index(ローカル索引)にすることはできない

PARTITION BY RANGE(c1)(STARTING FROM 1 ENDING 90 EVERY 30)

tbsp3tbsp2tbsp1

t1.p1 t1.p2 t1.p3

tbsp8tbsp7tbsp6

XDA1 XDA2 XDA3

Page 43: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

データ・オブジェクト

XMLデータの圧縮

create table dept (deptID char(8),...,doc XML inline length 10000)

• DB2 V9.5では、基礎表に保持されたものがV9.5での圧縮対象

• V9.7ではXDAオブジェクトに保持されたXMLデータも圧縮対象

• DB2 V9.5では、基礎表に保持されたものがV9.5での圧縮対象

• V9.7ではXDAオブジェクトに保持されたXMLデータも圧縮対象

© 2009 IBM Corporation43

ID … DOC (XML)

PR27 …

PR28 … XML記述子

ACC …

Regions

Index

索引オブジェクトデータ・オブジェクト

XDAオブジェクト(XML Data)圧縮可(V9.5)

圧縮可(V9.7)

Page 44: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XMLデータの圧縮方法

• 圧縮辞書の作成

• REORG TABLE (RESETDICTIONARYオプション)

• すでに表にデータがある場合(ALTER TABLE COMPRESS YESで表属性を変更しREORG)

• Automatic Dictionary Creation (ADC)

• V9.5から• 表に一定量のデータが挿入されると自動的に辞書が作成され、データが圧縮される

create table dept (deptID char(8),...,doc XML) compress yes

© 2009 IBM Corporation44

• 表に一定量のデータが挿入されると自動的に辞書が作成され、データが圧縮される

• LOAD REPLACE• V9.5から• 新規のテーブル作成/データを一時ExportしてLoadしなおす場合• 自動的な辞書の作成または既存辞書の再利用が可能

• XDA圧縮辞書が作成されないケース (SQL2220Wが返される)

• REORG、LOAD REPLACEを実行したが、XDAオブジェクトが空の場合

• XMLデータがV9.1、V9.5からのマイグレーションによるものの場合

• V9.7版のXDAフォーマットにするため、表の再作成が必要• ADMIN_MOVE_TABLEプロシージャー(V9.7新機能)を使用可能

Page 45: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

XML索引の圧縮

• ユーザー定義XML索引の圧縮可能

• 索引圧縮はV9.7新機能

• COMPRESS YESと指定された表に対する索引は自動的に圧縮

• CREATE INDEXで明示的に圧縮モードを指定(COMPRESS [YES|NO])

• ユーザー定義XML索引の圧縮可能

• 索引圧縮はV9.7新機能

• COMPRESS YESと指定された表に対する索引は自動的に圧縮

• CREATE INDEXで明示的に圧縮モードを指定(COMPRESS [YES|NO])

© 2009 IBM Corporation45

(COMPRESS [YES|NO])(COMPRESS [YES|NO])

Page 46: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

ブランク・ページ

© 2009 IBM Corporation46

ブランク・ページ

Page 47: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

表のオンライン移動機能ADMIN_MOVE_TABLEプロシージャー

© 2009 IBM Corporation47

ADMIN_MOVE_TABLEプロシージャー

Page 48: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

表のオンライン移動機能: ADMIN_MOVE_TABLEプロシージャー

表の読み書きを可能にしたまま、表を移動する

⇒ これまで表の再作成が必要だった変更作業をオンラインで実施できる

• 別の表スペースへの移動

• ディスク配置の変更

• 表スペース作成時に表スペース単位で決定される定義の変更(例:ページ・サイズ、エクステント・サイズなど)

© 2009 IBM Corporation48

(例:ページ・サイズ、エクステント・サイズなど)

• 表の定義情報の変更例えば…

• 索引定義

• MDC表の次元列 (MDC表において各行の格納されるブロックを決定する列)

• パーティション表のレンジ定義

• データの圧縮/非圧縮/再圧縮 表スペース 別 表スペース

C1 C2 C1 C2

INSERT,DELETE,UPDATE

Page 49: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

表のオンライン移動機能の仕組み

表スペース1 表スペース2

C1 C2

表移動の5つのステップ

① 初期化 (INIT)

-移動先表、トリガー、

ステージング表作成

-定義情報変更

② コピー (COPY)

-データ・コピー

C1 C2

INSERT,DELETE,UPDATE

トリガー

ソース表 ターゲット表

© 2009 IBM Corporation49

-データ・コピー

-変更データ情報を

ステージング表格納

③ リプレイ(REPLY)

-ステージング表からの差分データ反映

④ 切り替え(SWAP)

※アクセス不可

⑤ クリーンアップ

※keepオプション(元表保持)

ステージング表

表スペース1から表スペース2へ 表を移動させる場合

(CLEANUP)

推奨:

・ソース表にユニーク索引をつける

-差分データ更新される行が1つになるため

・作成ディスク・スペース容量を十分に確保する

-ソース表に加え、 ターゲット表、ターゲット表に付随する索引、ステージング表の

ための領域が必要、また、コピーに伴って必要となるログ量も考慮する必要がある

Page 50: 第6章 DB2の特徴的な機能紹介 - IBMDatabase Partitioning Feature(DPF)による並列処理 アプリケーションは意識することなく、複数サーバーによるス

Let’s go Lab7!!

© 2009 IBM Corporation50

Let’s go Lab7!!