(57)【要約】【課題】  設定されたパーティション数に対し、範囲参照検索の応答性能向上を目的とした適切なパーティション分割を取得する。【解決手段】  本発明は、入力データの範囲参照検索区間の端点を抽出して境界線候補として境界線候補記憶手段に格納し、該境界線候補とデータアクセスに要するIOコストをゼロとしたパーティション分割を生成してパーティション分割候補記憶手段に格納し、範囲参照検索区間の両端を除く境界線を一つ削除し、削除後のパーティション分割を生成し、IOコスト増分値を計算し、パーティション分割候補記憶手段に格納する。パーティション分割候補記憶手段のパーティション分割候補のパーティション数が所定の数Ｎ以下で、かつ、IOコスト増分値が最小となるパーティション分割候補をパーティション分割の結果として出力する。【選択図】  図２
2013080403.tif 000002
【特許請求の範囲】
【請求項１】
データベースのテーブルのパーティション分割を行うパーティション分割装置であって、
入力データの範囲参照検索区間の端点を抽出して境界線候補として境界線候補記憶手段に格納し、該境界線候補とデータアクセスに要するIOコストをゼロとしたパーティション分割を生成してパーティション分割候補記憶手段に格納するパーティション生成手段と、
前記範囲参照検索区間の両端を除く境界線を一つ削除し、削除後のパーティション分割を生成し、IOコスト増分値を計算し、前記パーティション分割候補記憶手段に格納する境界線削除手段と、
前記パーティション分割候補記憶手段の前記パーティション分割候補のパーティション数が所定の数Ｎ以下で、かつ、IOコスト増分値が最小となるパーティション分割候補をパーティション分割の結果として出力する評価手段と、
を有することを特徴とするパーティション分割装置。
【請求項２】
前記パーティション生成手段は、
シーケンシャルスキャンが多く実行されるように、最も細分化したパーティション分割を行う
請求項１記載のパーティション分割装置。
【請求項３】
前記境界線削除手段は、
前記IOコストを計算する際に、前記境界線を削除する前後におけるIOコスト増分を、前記入力データの全ての範囲参照検索範囲に渡る総和とし、個々の範囲参照検索範囲に対する個別のIOコスト増分値を、予め設定されている行数の見積もり値及び行当りのインデックススキャンのIOコストとシーケンシャルスキャンのIOコストの比を元に計算した、行当りのインデックススキャンのIOコストと対象行数の乗算値、または、行当りのシーケンシャルスキャンのIOコストとパーティション内の行数の乗算値のうち小さい値とする
請求項１記載のパーティション分割装置。
【請求項４】
データベースのテーブルのパーティション分割を行うパーティション分割方法であって、
パーティション分割手段が、入力データの範囲参照検索区間の端点を抽出して境界線候補として境界線候補記憶手段に格納し、該境界線候補とデータアクセスに要するIOコストをゼロとしたパーティション分割を生成してパーティション分割候補記憶手段に格納するパーティション生成ステップと、
境界線削除手段が、前記範囲参照検索区間の両端を除く境界線を一つ削除し、削除後のパーティション分割を生成し、IOコスト増分値を計算し、前記パーティション分割候補記憶手段に格納する境界線削除ステップと、
評価手段が、前記パーティション分割候補記憶手段の前記パーティション分割候補のパーティション数が所定の数Ｎ以下で、かつ、IOコスト増分値が最小となるパーティション分割候補をパーティション分割の結果として出力する評価ステップと、
を行うことを特徴とするパーティション分割方法。
【請求項５】
前記パーティション生成ステップにおいて
シーケンシャルスキャンが多く実行されるように、最も細分化したパーティション分割を行う
請求項４記載のパーティション分割方法。
【請求項６】
前記境界線削除ステップにおいて、
前記IOコストを計算する際に、前記境界線を削除する前後におけるIOコスト増分を、前記入力データの全ての範囲参照検索範囲に渡る総和とし、個々の範囲参照検索範囲に対する個別のIOコスト増分値を、予め設定されている行数の見積もり値及び行当りのインデックススキャンのIOコストとシーケンシャルスキャンのIOコストの比を元に計算した、行当りのインデックススキャンのIOコストと対象行数の乗算値、または、行当りのシーケンシャルスキャンのIOコストとパーティション内の行数の乗算値のうち小さい値とする
請求項４記載のパーティション分割方法。
【請求項７】
コンピュータを、
請求項１乃至３のいずれか１項に記載のパーティション分割装置の各手段として機能させるためのパーティション分割プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テーブルパーティション分割装置及び方法及びプログラムに係り、特に、データベースにおいて大きなデータサイズを扱う場合のテーブルのパーティション分割装置及び方法及びプログラムに関する。詳しくは、テーブルのパーティション分割を行うことで、検索対象データが存在しないパーティションに関しては、アクセスを行わないようにするためのテーブルパーティション分割装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
商用データベースでは与えられたワークロードに関するパーティション分割の実施要否を推奨し、パフォーマンス向上を支援する機能やデータベース設計を支援する設計アドバイザが存在する（例えば、非特許文献１，２参照）。このようにデータサイズの大きなデータベース設計は大変複雑であり、それ自体のツールの支援やパーティションの分割の自動実現方式が必要とされる分野である。
【０００３】
しかし、従来の技術はパーティション分割の実施要否の推奨を行うものであって、具体的にパーティション分割を行うにあたり、分割方法（境界線を指定する分割キー）の出力には対応していない。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Oracle Databaseパフォーマンス・チューニング・ガイド11gリリース（11.1） 18 SQLアクセス・アドバイザhttp://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E0574302/advisor.htm
【非特許文献２】DB2 V8.2 設計アドバイザの使用パート2:データウェアハウスを設計するのに有効なヘルプ情報http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/499721c3388537bd49256b1a001aab28/4925722f004efcee492570d4005a65ef/$FILE/Using%20the%20DB2%20V8.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、テーブルのパーティション分割を行うことで、検索対象データが存在しないパーティションに関しては、図１に示すように応答性能向上を図ることができる。図１（ａ）はテーブル分割を行わなかった場合を示し、同図（ｂ）はテーブル分割を行った場合のシーケンシャルスキャンによるアクセス範囲を示している。また、不要なデータアクセスを行わないように適切なパーティション分割を探索するにあたり、一般的にはパーティション分割数を増大させることで全ての想定される範囲参照検索に対しアクセス不要なパーティションを常に用意することができる。しかしその一方で、パーティション数を増大させ過ぎると、アクセス先のパーティションを決定する処理やパーティションごとの固有処理で必要なオーバヘッドが無視できないほど大きくなるため適当といえない。結果的には、応答性能向上を目的としたパーティション分割ではパーティション数はある有限な値をとらざるを得ない。
【０００６】
本発明は、上記の点に鑑みなされたもので、設定されたパーティション数に対し、範囲参照検索の応答性能向上を目的とした適切なパーティション分割を取得することが可能なテーブルパーティション分割装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、本発明（請求項１）は、データベースのテーブルのパーティション分割を行うパーティション分割装置であって、
入力データの範囲参照検索区間の端点を抽出して境界線候補として境界線候補記憶手段に格納し、該境界線候補とデータアクセスに要するIOコストをゼロとしたパーティション分割を生成してパーティション分割候補記憶手段に格納するパーティション生成手段と、
前記範囲参照検索区間の両端を除く境界線を一つ削除し、削除後のパーティション分割を生成し、IOコスト増分値を計算し、前記パーティション分割候補記憶手段に格納する境界線削除手段と、
前記パーティション分割候補記憶手段の前記パーティション分割候補のパーティション数が所定の数Ｎ以下で、かつ、IOコスト増分値が最小となるパーティション分割候補をパーティション分割の結果として出力する評価手段と、を有する。
【０００８】
また、本発明（請求項２）は、前記パーティション生成手段において、
シーケンシャルスキャンが多く実行されるように、最も細分化したパーティション分割を行う。
【０００９】
また、本発明（請求項３）は、前記境界線削除手段において、
前記IOコストを計算する際に、前記境界線を削除する前後におけるIOコスト増分を、前記入力データの全ての範囲参照検索範囲に渡る総和とし、個々の範囲参照検索範囲に対する個別のIOコスト増分値を、予め設定されている行数の見積もり値及び行当りのインデックススキャンのIOコストとシーケンシャルスキャンのIOコストの比を元に計算した、行当りのインデックススキャンのIOコストと対象行数の乗算値、または、行当りのシーケンシャルスキャンのIOコストとパーティション内の行数の乗算値のうち小さい値とする。
【発明の効果】
【００１０】
本発明によれば、範囲参照検索の応答性能向上を図ることができる。また、不要なデータアクセスを行わないような適切なパーティション分割の分割方法（境界線を指定する分割キー値）を出力するアドバイザを実現できる。
【図面の簡単な説明】
【００１１】
【図１】テーブル分割を行わなかった場合とテーブル分割を行った場合のアクセス範囲である。
【図２】本発明の一実施の形態におけるパーティション分割装置の構成図である。
【図３】本発明の一実施の形態における入力データの例である。
【図４】本発明の一実施の形態における行数を見積もるためのヒストグラムの例である。
【図５】本発明の一実施の形態における全体動作のフローチャートである。
【図６】本発明の一実施の形態におけるパーティション分割初期生成における入力データと分割キーの例である。
【図７】本発明の一実施の形態における境界線候補記憶部のデータ構造である。
【図８】本発明の一実施の形態におけるパーティション分割候補記憶部のデータ構造である。
【図９】本発明の一実施の形態における境界線削除処理の例である。
【図１０】本発明の一実施の形態におけるパーティション数削減（境界線削除）を行った場合のIOコスト増分を示す図である。
【図１１】本発明の一実施の形態における図５のＳ１３０のパーティション分割の初期生成処理のフローチャートである。
【図１２】本発明の一実施の形態における図５のＳ１６０のパーティション分割取得処理のフローチャートである。
【図１３】本発明の一実施の形態におけるIOコスト増分値が最小となるパーティション分布の探索の例である。
【図１４】本発明の一実施の形態におけるＳ３６０の個別IOコスト増分値の計算処理のフローチャートである。
【図１５】本発明の一実施の形態におけるIOコスト計算の例である。
【図１６】本発明の一実施の形態におけるパーティション分割の出力結果の例である。
【図１７】本発明の一実施の形態における出力結果をテーブル定義として利用する例である。
【図１８】本発明の効果を示す図である。
【発明を実施するための形態】
【００１２】
以下図面と共に、本発明の実施の形態を説明する。
【００１３】
本発明のパーティション分割装置の構成について説明する。
【００１４】
図２は、本発明の一実施の形態におけるパーティション分割装置の構成を示す。
【００１５】
同図に示すパーティション分割装置は、入力データ記憶部１、ヒストグラム記憶部８、分割処理部２、出力データ記憶部３、境界線候補記憶部４、パーティション分割候補記憶部５、パーティション数記憶部６、IOコスト比設定値記憶部７から構成される。
【００１６】
入力データ記憶部１、ヒストグラム記憶部８、出力データ記憶部３、境界線候補記憶部４、パーティション分割候補記憶部５、パーティション数記憶部６、IOコスト比設定値記憶部７は、ハードディスク装置等の記憶媒体に設けられる。
【００１７】
図３に、入力データ記憶部１に格納されている入力データの例を示す。入力データはクエリ名、分割キー名、範囲参照検索区間開始値と範囲参照検索区間終了値を含む。
【００１８】
パーティション数記憶部６には、後述する図５のステップ１１０で用いられるパーティション数設定値Ｎを保持する。例えば、Ｎ＝３の場合は、「３」を保持する。当該行の見積もり値は、分割キーの範囲から行数を見積もるためにはデータ分布が必要なため、ヒストグラム記憶部８の図４に示すヒストグラムを使用する。例えば、分割キー１の値が１５と４０の間の行数を見積もるには線形補間を用いて、
見積もり行数＝FLOOR[25×(15-10)/(20-10)+10×(40-20)/(50-20)]
により計算する。但し、FLOORは小数点切り下げを表す。
【００１９】
IOコスト比設定値記憶部７は、運用者により設定された行当りのインデックススキャンのIOコストとシーケンシャルスキャンのIOコストの比が格納されている。例えば、図５のステップ１００のIOコスト比ｐ（設定値）を保持する。例えば、p=2000の場合は「2000」を保持する。
【００２０】
パーティション数記憶部６とIOコスト比設定値記憶部７のデータは、分割処理部２によるIOコスト増分値の計算に利用される。
【００２１】
以下に本発明の概要動作を示す。
【００２２】
図５は、本発明の一実施の形態における全体動作のフローチャートである。
【００２３】
ステップ１００）  パーティション分割処理部２は、IOコスト比設定値記憶部７からIOコスト比ｐ（設定値）を取得する。
【００２４】
ステップ１１０）  次に、分割処理部２は、パーティション数記憶部６からパーティション数設定値Ｎを取得する、
ステップ１３０）パーティション分割を行うにあたり、まず、分割処理部２は、パーティション分割の初期生成として、図６（A）に示す入力データを入力データ記憶部１から読み込み、当該入力データを元に最も細分化されたパーティション分割（図６（B））を生成し、これを基本とし、境界線候補記憶部４に格納する。このとき、シーケンシャルスキャンが多く実行されるようにパーティション分割を行う。これは、インデックススキャンはまずインデックス木のルートからリーフまで辿ることでアクセス先を決定してからテーブルデータにアクセスするのに対し、シーケンシャルスキャンは直接テーブルデータにアクセスするため、行当りのIOコストはインデックススキャンよりもシーケンシャルスキャンの方が常に小さいからである。
【００２５】
具体的には、図７に示すように、入力データの範囲参照検索範囲の端点（開始値、終了値）を全て使用し、これを境界線としたパーティション分割を得る。これにより図８（A）に示すような分割キー境界候補が得られる。分割キー１の境界線数を３、分割キー２の境界線数を３とすると、パーティション数＝（３−１）×（３−１）＝４となる。
【００２６】
ステップ１４０）  上記のパーティション分割の結果をパーティション分割候補としてパーティション分割候補記憶部５に格納する。
【００２７】
ステップ１５０）  次に、一つの境界線を削除する処理を行う。このとき、削除できる境界線が存在するかを判定し、存在する場合は、ステップ１６０に移行し、存在しない場合はステップ１７０に移行する。図９に、分割キー１、分割キー２を分割キーとした場合の境界線削除処理の例を示す。定義域の両端は削除不可とするため、削除可能な境界線は分割キー１の＃１、＃２、＃３及び分割キー２の＃１、＃２となる。分割キー１の＃１、＃２、＃３のいずれかを削除した場合はパーティション数が１２から９に減少し、分割キー２の＃１、＃２のいずれかを削除した場合はパーティション数が１２から８に減少する。
【００２８】
ステップ１６０）  ステップ１５０において、境界線数を１減少させた場合のパーティション分割を取得してパーティション分割候補記憶部５に格納する。
【００２９】
ステップ１７０）  上記の境界線を削除したことにより、図１０に示すように、アクセス範囲が大きくなり、不要なアクセスが増大し、IOコスト増分となる。そのため、分割処理部２は、可能なパーティション分割を生成し、IOコスト増分値を計算し、パーティション分割候補から、パーティション数≦Ｎを満たすIOコスト増分値が最小となるパーティション分割を抽出して出力データ記憶部３に出力する。
【００３０】
IOコスト増分値の計算にあたっては、境界線を削除する前後におけるIOコスト増分を、入力データの全ての範囲参照検索範囲にわたる総和とする。ここで、個々の範囲参照検索範囲に対する個別のIOコスト増分値は、パーティション数記憶部６の行数の見積もり値及びIOコスト比設定値記憶部７の行当りのインデックススキャンのIOコストとシーケンシャルスキャンのIOコストの比（運用者によるシステム設定値）を元に計算した以下のうちでいずれかが小さい値として得る。
【００３１】
・行当りのインデックススキャンのIOコスト×対象行数
・行当りのシーケンシャルスキャンのIOコスト×パーティション内の行数
以下に図５の各処理について詳細に説明する。
【００３２】
まず、図５のステップ１３０のパーティション分割の初期生成処理について説明する。
【００３３】
図１１は、本発明の一実施の形態における図５のＳ１３０のパーティション分割の初期生成処理のフローチャートである。
【００３４】
ステップ２００）パーティション分割処理部２は、境界線候補記憶部４を初期化する。
【００３５】
ステップ２１０）  入力データから１行読み出して範囲参照検索区間の端点を取り出す。
【００３６】
ステップ２２０）  端点が既に境界線候補記憶部４の境界線候補に存在するかを判定し、存在する場合はステップ２４０に移行し、存在しない場合はステップ２３０に移行する。
【００３７】
ステップ２３０）  区間の端点を分割キー値の昇順になるように境界線候補記憶部４の境界線候補に追加する。
【００３８】
ステップ２４０）  入力データ記憶部１に読み出していない入力データがある場合はステップ２１０に移行し、ない場合はステップ２５０に移行する。
【００３９】
ステップ２５０）  得られた境界線候補を境界線候補、IOコスト増分値をゼロとしたパーティション分割を生成し、パーティション分割候補記憶部５に格納する。
【００４０】
次に、図５のステップ１６０のパーティション分割取得処理について説明する。
【００４１】
図１２は、本発明の一実施の形態における図５のＳ１６０のパーティション分割取得処理のフローチャートである。
【００４２】
ステップ３００）  パーティション分割処理部２は、ステップ１５０において、一つ削除できる境界線がある場合に、パーティション分割候補記憶部５に一つ境界線を削除した後の境界線数をＭと記述し、境界線数Ｍのパーティション分割候補を初期化する。
【００４３】
ステップ３１０）  境界線数Ｍ＋１のパーティション分割候補からIOコストが最小となるパーティションを一つ選択する。
【００４４】
ステップ３１５）  選択したパーティション分割のパーティション数≦Ｎ（設定値）である場合はステップ３９５に移行し、そうでない場合はステップ３２０に移行する。
【００４５】
ステップ３２０）  パーティション分割候補記憶部５のパーティション分割候補の中で一つ境界線（但し、定義域の両端は対象外）を選択する。
【００４６】
ステップ３３０）  選択されたパーティション数Ｍ＋１のパーティション候補のIOコスト増分値をこれから計算するIOコスト増分値の初期値とする。
【００４７】
ステップ３４０）  入力データから１行読み出して範囲参照検索区間を取り出す。
【００４８】
ステップ３５０）  選択した境界線または隣接した境界線は区間と重なる場合はステップ３６０に移行し、重ならない場合はステップ３７０に移行する。
【００４９】
ステップ３６０）  境界線を削除した場合の個別IOコスト増分を計算し、IOコスト増分値に加算する。詳細な処理については図１３で説明する。
【００５０】
ステップ３７０）  入力データ記憶部１に読み出していない入力データがある場合はステップ３４０に移行し、ない場合はステップ３８０に移行する。
【００５１】
ステップ３８０）  パーティション分割候補記憶部５にパーティション分割候補を追加する。
【００５２】
ステップ３９０）  パーティション分割候補記憶部５内に選択していない境界線がある場合はステップ３２０に移行する。
【００５３】
ステップ３９５）  IOコスト最小の選択していない境界線数Ｍ＋１のパーティション分割候補がパーティション分割候補記憶部５に存在する場合にはステップ３１０に移行し、ない場合は当該処理を終了する。
【００５４】
上記のステップ３６０の処理の例を図１３に示す。
【００５５】
図１３において、丸はパーティション分割候補であり、丸の中の数字はパーティション初期生成からのIOコストを表す（但し、説明の便宜上初期生成のコストはゼロではなく８０とした）。パーティション初期生成（境界線数３）を出発として境界線を一つずつ削除し、削除可能な境界線が存在しなくなるまで境界線配置の組合せを生成する。例えば、パーティション数設定値が２の場合、パーティション数が２以下のパーティション分割候補のIOコスト増分値を比較し、IOコストが最小となるパーティション分割を取得する。
【００５６】
上記のステップ３６０の個別IOコスト増分値の計算処理について説明する。
【００５７】
図１４は、本発明の一実施の形態における図１２のＳ３６０の個別IOコスト増分値の計算処理のフローチャートである。
【００５８】
ステップ４００）  パーティション分割処理部２は、選択した境界線、隣接した境界線、区間を元にパーティション内の行数ｑ１、ｑ２と検索対象の行数ｒ１，ｒ２を計算する。このとき、ヒストグラム記憶部８から図４に示すようなヒストグラムを読み出し、線形補間により行数ｑ１，ｑ２と検索対象の行数ｒ１，ｒ２を計算する。
【００５９】
ステップ４１０）  以下の個別IOコスト増分値を計算する。
【００６０】
min[(1+p)(r1+r2)，q1+q2]−min[(1+p)r1，q1]−min[(1+p)r2，q2]      (1)
上記の図１４の処理によるIOコスト計算の例を以下に示す。
【００６１】
図１５において、パーティションiに対して検索対象行数をri、パーティション内行数をqiとする。また、行当りのシーケンシャルスキャンのコストを１、行当りのインデックススキャンのIOコストを（１＋ｐ）とする。全テーブルのIOコストはΣiを全パーティションの総和とすれば、Σi min[(1+p)×ri,qi]となる。すなわち、各パーティションで（1+p）×riまたはqiのうちで小さい方をとった全パーティションの総和となる。そこで選択した境界線を削除してパーティションを併合した場合（図１５）のIOコスト増分値は式 (1)となる。
【００６２】
上記のフローチャートで説明したように、パーティション分割を行うにあたり、まず、パーティションの分割の初期生成として、入力データ（図３）を元に、図５のステップ１３０の処理により最も細分化されたパーティション分割を生成する。
【００６３】
次に、一つの境界線を削除する処理を実行し、全ての可能なパーティション分割を生成し、IOコスト増分値を計算する（図５のステップ１６０）。この処理では、図１５に示すように、削除する境界線各候補にわたってIOコスト増分値を評価する。IOコスト増分値の計算は、境界線を削除する前後におけるIOコスト増分を、入力データの全ての範囲参照検索範囲に渡る総和とする。こうしてパーティション分割をパーティション数が設定値以下に達するか（ステップ３１５）または、削除できる境界線が存在しなくなるまで生成し（ステップ１５０）、IOコスト増分値を評価した後、パーティション群かつ候補のうちパーティション数が設定値以下の条件を満たすIOコスト増分値が最小となるパーティション分割を結果として出力する（ステップ１７０）。パーティション分割の出力の例を図１６に示す。図１６に示すように、パーティション分割初期生成では、パーティション数が大きすぎるため、パーティション数削減を行う。パーティション数が設定値（例えば、３）以下に到達した時点で次世代の生成は打ち切る。このようにして、パーティション数が設定値以下でIOコスト増分値が最小となるパーティション分割を結果として出力データ記憶部３に出力する。
【００６４】
当該出力結果は、例えば、図１７に示すようなパーティション分割のテーブル定義のために用いることができる。図１７の例では、パーティション数３の場合を示している。テーブルpartitionをテーブルpartition_0，patition_1，patition_2にパーティション分割する分割キー（key）の値の定義域0＜key≦10に対して境界線をkey=2，5とする。
【００６５】
本発明では、入力データを利用し、与えられたワークロードに対してよりシーケンシャルスキャンが多く実行されるようにパーティション分割を行う。図１８（ａ）は、分割キー値の等間隔のパーティション分割を示し、同図（ｂ）は本発明の初期生成時のパーティション分割を示す。同図（ａ）の検索範囲の参照検索が実行された場合、等間隔のパーティション分割においてはパーティション＃３内のデータの一部のみ検索対象となるのに対し、同図（ｂ）の本発明による初期生成時のパーティション分割においては、（入力データの範囲参照検索範囲の端点を境界線としたため）パーティション＃３内の全データが検索対象となる。
【００６６】
なお、図２のパーティション分割装置の各構成要素の動作をプログラムとして構築し、パーティション分割装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００６７】
本発明は、上記の実施の形態に限定させることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００６８】
１  入力データ記憶部
２  パーティション分割処理部
３  出力データ記憶部
４  境界線候補記憶部
５  パーティション分割候補記憶部
６  パーティション数記憶部
７  IOコスト比設定記憶部
８  ヒストグラム記憶部
【図１】
2013080403.tif 000003
【図２】
2013080403.tif 000004
【図３】
2013080403.tif 000005
【図４】
2013080403.tif 000006
【図５】
2013080403.tif 000007
【図６】
2013080403.tif 000008
【図７】
2013080403.tif 000009
【図８】
2013080403.tif 000010
【図９】
2013080403.tif 000011
【図１０】
2013080403.tif 000012
【図１１】
2013080403.tif 000013
【図１２】
2013080403.tif 000014
【図１３】
2013080403.tif 000015
【図１４】
2013080403.tif 000016
【図１５】
2013080403.tif 000017
【図１６】
2013080403.tif 000018
【図１７】
2013080403.tif 000019
【図１８】
2013080403.tif 000020