HiRDBのSQL実行プランはどのようにHiRDBのSQL実行プランはどのように決定しているのか?
株式会社 日立製作所 情報・通信システム社
2014/06/18
株式会社 製作所 情報 通信 テ 社ITプラットフォーム事業本部 開発統括本部ソフトウェア開発本部 DB設計部
成田 正亮
© Hitachi, Ltd. 2014. All rights reserved.
成田 正亮
本日のテーマ
HiRDB初期バージョンから進化し続けている SQL実行プラン/SQL実行時ている、SQL実行プラン/SQL実行時動作の根幹部分を紹介致します。
© Hitachi, Ltd. 2014. All rights reserved. 1
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 2
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 3
1.1 HiRDBについて
「止めない」設計思想を貫く「止めない」設計思想を貫く高信頼ノンストップデータベース高信頼ノンストップデータベース高信頼ノンストップデ タベ ス高信頼ノンストップデ タベ ス
社会基盤を支えるために日立が自社開発にこだわり続ける純国産RDBMS日立が自社開発にこだわり続ける純国産RDBMS
ハイアールディービー
Highly Scalable Relational DataBase
今まで培った信頼性をベースにクラウド時代を支える「ワンランク上の」
データベースを目指します
© Hitachi, Ltd. 2014. All rights reserved. 4
デ タベ スを目指します。
1.2 HiRDBの歴史
オープンシステムで進化’14
超高速データベースエンジン
進化
■クラウド時代を支える高性能 高信頼デ タベ スへ
メインフレーム(MF)での発展
XDM/RD V12’10/1 ’10/4
Hitachi Advanced Data Binder技術の継承
’03
HiRDB V8’03/8
■ ビジネスの急速な変化に対応する柔軟性を兼ね備えた、情報統合基盤と高信頼ノンストップデータベースへ
XDM/RD V11’05/1 ’06/6
高性能・高信頼データベースへ
HiRDB V6 ■ネットビジネス(24×7運用)に応える長時間連続運転の更なる強化
■ ノンストップビジネスに応える耐障害性と可用性を追及
’01
XDM/RD V9’02/9
HiRDB V7XDM/RD V10
XDM/RD
技術の継承
HiRDB V2~5 ■ミッションクリティカル向け機能・性能強化■デジタルコンテンツの拡張・Universal Server リリース
に応える長時間連続運転の更なる強化
’94
’95~’99
PDMADMXDM/SD
RDB1 HiRDB V1 ■オープンシステム向けミッションクリティカル向けデータベース・Shared Nothingでのパラレルサーバ リリース
94
© Hitachi, Ltd. 2014. All rights reserved. 51970 1990 2000 2010
PDM時代
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 6
2.1 SQL最適化とは?
インデクスを使用すれば必ずコストが良いのか?
コスト
インデクススキャンのコスト遷移
インデクスを使用しない方がコストが小さい場合も!
コスト
テーブルスキャンのコスト遷移
インデクスを使用した方がコストが小さい場
合はこの範囲!
ヒット率100%0
条件にもよるが10数%が境目
合はこの範囲!
100%0
テーブルスキャンを選択するケース
インデクススキャンを選択するケース選択するケ ス
© Hitachi, Ltd. 2014. All rights reserved. 7
2.2 SQL実行プラン決定方法 ~ ルールベース ~
ルールベース
インデクスの定義情報,SQLの指定内容に基づいて,プロダクションルール従って, SQLの各部分ごとにSQL実行プダクションル ル従って, SQLの各部分ごとにSQL実行プランを選択していくことによってSQL全体を最適化。
インデクス定義CREATE UNIQUE INDEX インデクス1 ON 表1(列1,列2)
SQLSQLSELECT 列1,列2,列3 FROM 表1 WHERE 列1=値 and … ORDER BY 列1,列2
規則Aに従ってプランA-1を選択
規則Bに従ってプランB-3を選択
規則Cに従ってプランC-5を選択
© Hitachi, Ltd. 2014. All rights reserved. 8
2.3 SQL実行プラン決定方法 ~ コストベース ~
コストベース
幾つかのアクセス手順の候補を生成し,SQL実行プランの各候補ごとにコスト(処理負荷)を計算・比較することによ て 採用するSQL実行プランを決定よって,採用するSQL実行プランを決定
アクセス手順1インデクスAを使用して・・・
リソースA負荷:1234リソースB負荷:2345
アクセス手順2インデクスB,Cを使用して
リソースA負荷:4321リソースB負荷:1111
比較
アクセス手順3インデクスを使用せずに・・・
リソースA負荷:5555リソースB負荷:9999
© Hitachi, Ltd. 2014. All rights reserved. 9
2.4 HiRDBのSQL実行プラン決定方法
HiRDBが採用している方式は?
V1(1994年)からコストベース方式を採用!
ルールベース(既定値)+リアルコストベースル ル ス(既定値)+リアルコスト ス
ハイブリッド方式!
© Hitachi, Ltd. 2014. All rights reserved. 10
2.5 コスト計算に使用する値
コスト計算に使用している主項目は?
・表の情報 ・CPU単価 ・ロック処理単価・インデクスの情報 ・I/O単価 ・サーバ数・列の情報 ・通信単価 ・ヒット率 など・列の情報 ・通信単価 ・ヒット率 など
インデクス 表/列
インデクスA~D 表A列A 列B
イ デク E H 表B列C 列D
インデクスE~H 表B
© Hitachi, Ltd. 2014. All rights reserved. 11
2.6 コスト計算に使用する値 ~ 表の情報 ~
表の情報で使用している値は?
・行数・格納ページ数 など
ペ ジ
物理構造 データベースの入出力
表
表A
ページ
ページA
ペ ジB
スの入出力最小単位
行数
ページC
ページB
ページ数
ページD
© Hitachi, Ltd. 2014. All rights reserved. 12
2.7 コスト計算に使用する値 ~ インデクスの情報 ~
インデクスの情報で使用している値は?
・異なるキー値の個数・インデクスページ数・インデクスの段数・インデクスの段数・行データのシーケンシャル度 など
重複がインデクス
インデクスA
b b d d
インデクスキー値
異なるキー値の個数重複が少ないとインデクスの効果が高い!
インデクスの段数a b b c c c d d e
行データの
ページ
ページA 行デ タのシーケンシャル度
行データd d e
a b b c c c
ジA
ページB ページ数
© Hitachi, Ltd. 2014. All rights reserved. 13
2.8 コスト計算に使用する値 ~ 列の情報① ~
列の情報で使用している値は?
・異なる値の個数・重複値の個数の最小数・重複値の個数の最大数・重複値の個数の最大数・ナル値の個数 次ページに続く
列A 列B 列C 列D・・・ ・・・ ・・・ 1・・・ ・・・ ・・・ 2
重複値の個数の最小数
異なる値の ・・・ ・・・ ・・・ 1・・・ ・・・ ・・・ 3・・・ ・・・ ・・・ 2・・・ ・・・ ・・・ 4
重複値の個数の最大数
異なる値の個数
・・・ ・・・ ・・・ 4・・・ ・・・ ・・・ 2・・・ ・・・ ・・・ 2・・・ ・・・ ・・・ NULL ナル値の個数
© Hitachi, Ltd. 2014. All rights reserved. 14
・・・ ・・・ ・・・ NULL
2.9 コスト計算に使用する値 ~ 列の情報② ~
列の情報で使用している値は?
・値の分布情報 など
区間内の値の個数
区間内の異なる
データ件数を基に、最大分割数nで区間分割を行い、区間内の値の個数/異なる値の個数を分布情報化
異なる値の個数
区件数
列値の最小値 列値の
最大値
区間
件数
値
最大値
区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
・・・
© Hitachi, Ltd. 2014. All rights reserved. 15
間1
間2
間3
間4
間5
間6
間n-5
間n-4
間n-3
間n-2
間n-1
間n
2.10 コスト計算に使用する値 ~ 区間分布情報 ~
重複データが多い場合は?
隣合う区間の全キー値が一つの場合、一区間に纏める
・分布情報容量圧縮探索範囲削減
全て同一の値 一区間に纏める
・探索範囲削減
件数 件数件数 件数
異なる値の個数は全て1
異なる値の個数は1のまま
値区間
区間
区間
区間
区間
区間
値区間
区間
区間
区間
© Hitachi, Ltd. 2014. All rights reserved.
間1
間2
間3
間4
間5
間6
16
間1
間2
間3
間4
2.11 コスト計算に使用する値 ~ ヒット率 単一条件時 ~
分布情報をどのように使用するのか?
各区間内のインデクスキー値数、及び重複数を基に、SQLに指定した条件のヒット率を計算(仮定)。
SQL例)SELECT 列1,列2,列3 FROM 表1 WHERE 列1=‘HiRDB’
デ タ‘HiRDB’が存在する区間 ‘HiRDB’のデ タ件数は ‘HiRDB’のヒ ト率は
件数
データ‘HiRDB’が存在する区間・値の個数:100・異なる値の個数:20
全データ件数
‘HiRDB’のデータ件数は100/20=5件と仮定
‘HiRDB’のヒット率は5/10000=0.05%
件数 全データ件数10000
100
ヒット率が低いとインデクスを使用
値区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
区間
・・・インデクスを使用、ヒット率が高いとインデクス未使用
© Hitachi, Ltd. 2014. All rights reserved.
値間1
間2
間3
間4
間5
間6
間95
間96
間97
間98
間99
間100
17
2.12 コスト計算に使用する値 ~ ヒット率 複数条件時 ~
条件を複数指定している場合は?
条件式が互いに独立と仮定して、個別にヒット率を計算
SQL例)SELECT 列1 列2 列3 FROM 表1 WHERE 列1 ‘HiRDB’ AND 列2 ‘HITACHI’
‘HiRDB’& ‘HITACHI’では
SELECT 列1,列2,列3 FROM 表1 WHERE 列1=‘HiRDB’ AND 列2=‘HITACHI’
件数
100
列1の区間分布情報 ‘HiRDB’のヒット率が0.05%HITACHI では
0.0005%
値区 区 区 区 区 区 区 区 区 区 区 区
・・・
100
値区間1
区間2
区間3
区間4
区間5
区間6
区間95
区間96
区間97
区間98
区間99
区間100
件数 列2の区間分布情報 ‘HITACHI’のヒット率が1%
値
・・・
100
定義しているインデクスの中で、一番ヒット率が低いインデクスを採用
定義しているインデクスの中で、一番ヒット率が低いインデクスを採用
列1、列2を含んで定義しているインデクスの中から、ヒット率が一番
デ
© Hitachi, Ltd. 2014. All rights reserved. 18
値区間1
区間2
区間3
区間4
区間5
区間6
区間95
区間96
区間97
区間98
区間99
区間100
低いインデクスを採用低いインデクスを採用低いインデクスを採用
2.13 コスト計算に使用する値 ~ 区間分布情報 ~
HiRDBが最も精度を高められるケースは?
区間分割数が「100」の場合!⇒ヒット率精度誤差0.5%以内を保証
精度誤差が発生するケース:全データが1000件(‘a’が1件 ’b’が999件)
分布上は1データあたりの件数は
データ数は990件
種類数は( a が1件、 b が999件)⇒’a’のヒット率は1/1000=0.1%
あたりの件数はデータ/重複数=10/2=5件
種類数は’b’1件
区間分布情報を使うと・・・⇒’a’のヒット率は5件/1000=0.5%
データ数は10件
値区 区
データ数は10件種類数は’a’’b’2件
© Hitachi, Ltd. 2014. All rights reserved. 19
間1
間2
19
2.14 算出しているコスト ~ 種類 ~
算出しているコストの種類は?
・CPUコスト・I/OにかかるCPUコストI/O スト など・I/Oコスト など
サーバマシンCPUコスト I/Oコスト
DB
I/OにかかるCPUコスト
© Hitachi, Ltd. 2014. All rights reserved. 20
2.15 算出しているコスト ~ 計算式 ~
計算式は?
インデクススキャンコストの計算式概要は下記
CPUコストCPUコスト(インデクスヒット率,行数,プロセス数,インデクス段数 などから算出)
+I/OにかかるCPUコスト(インデクスヒット率,行数,プロセス数,クラスタ率 などから算出)I/O ト+I/Oコスト(ランダムI/O時間(インデクス段数 などから算出)+ブロックI/O時間(インデクスページ数 などから算出))
© Hitachi, Ltd. 2014. All rights reserved. 21
2.16 SQLの世界の最適化項目
SQLの世界の最適化対象項目
・表、インデクス、列・・・・データ格納ページ数、インデクスキー格納ページ数・・・・異なる値のデータ個数、分布情報・・・
SQLの世界以外SQLの世界以外(マシン構成)の
最適化対象項目は?最適化対象項目は?
© Hitachi, Ltd. 2014. All rights reserved. 22
2.17 HiRDBシステムの構成①
HiRDBの構成は?
サーバマシン
■ HiRDB/シングルサーバ ■ HiRDB/パラレルサーバ(Shared-Nothing)
特定のデータは特定のサーバで参照
DBサーバマシン
クライアント
定 参
DB
DB
クライアントクライアント
DB
DBクライアントクライアント
• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル
• 複数台のサーバマシン上で動作• 並列処理が可能• 複数台のサーバマシン上で動作• 並列処理が可能
© Hitachi, Ltd. 2014. All rights reserved. 23
• スケールアップも可能• スケールアップも可能 • スケールアップとスケールアウトが可能• スケールアップとスケールアウトが可能
2.18 HiRDBシステムの構成②
DBデータの処理方法は?
サーバマシン
■ HiRDB/パラレルサーバ(Shared-Nothing)
ケース1:1つのサ バのデ タのみ
使用していないこのマシンを有効活用すると
DB
1つのサーバのデータのみ参照するケース
用すると・・・
DB
クライアント
ケース1:複数のサーバのデータをケース2:複数のサーバのデータを
必要なデータのみ転送すると・・・
DBクライアント
複数のサ バのデ タを参照するケース複数のサ バのデ タを参照するケース(結合検索/ソート処理等)
マシン構成の世界の
検索したデータをいずれかのサ バに転送し結合処理を行う
マシン構成の世界の最適化対象項目・結合/ソート処理サーバ(フロータブルサーバ)の決定
結合処理
© Hitachi, Ltd. 2014. All rights reserved. 24
サーバに転送し結合処理を行う (フ タブルサ )の決定・サーバ間のデータ転送方法の決定
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 25
3.1 HiRDBシステムの構成(再掲)
HiRDBの構成は?
サーバマシン
■ HiRDB/シングルサーバ ■ HiRDB/パラレルサーバ(Shared-Nothing)
特定のデータは特定のサーバで参照
DBサーバマシン
クライアント
定 参
DB
DB
クライアントクライアント
DBクライアントクライアント
• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル
• 複数台のサーバマシン上で動作• 並列処理が可能• 複数台のサーバマシン上で動作• 並列処理が可能
© Hitachi, Ltd. 2014. All rights reserved. 26
• スケールアップも可能• スケールアップも可能 • スケールアップとスケールアウトが可能• スケールアップとスケールアウトが可能
3.2 データ取出サーバでのSQL処理
データ取出サーバでSQL処理を行う場合
サーバマシン データ取出ソート処理
DB
データ取出サーバでI/Oおよびソート処理を行っている最中
処理なしサーバ
クライアント
る最中に、処理を行わないサーバが存在するケースあり処理なしサーバクライアント
ソート処理
処理なしサ バ
クライアント
DB データ取出
© Hitachi, Ltd. 2014. All rights reserved. 27
3.3 フロータブルサーバ
フロータブルサーバとは?
負荷が高い結合処理、
サーバマシン データ取出
負荷が高い結合処理、ソート処理用に割り当てるサーバ
DB
結合処理
クライアント
ソート処理
データ配置によらず
クライアント
結合処理負荷が低いサーバに
処理を任せる!負荷が低いサーバに
処理を任せる!デ タ配置によらずサーバ間の負荷を均等にできる
クライアント
DB データ取出
© Hitachi, Ltd. 2014. All rights reserved. 28
3.4 割り当て方式の種類 ~ 専用サーバ ~
専用サーバ割り当て方式
サーバマシン データ取出
データ取出用以外のDB デ タ取出用以外のサーバを候補に割り当て
クライアント
フロータブルサーバ
クライアント
フロータブルサーバデータ取り出し量が多い場合にサーバ間の
クライアント
DB データ取出
多い場合にサ バ間の負荷分散効果大
© Hitachi, Ltd. 2014. All rights reserved. 29
3.5 割り当て方式の種類 ~ 全サーバ ~
全サーバ割り当て方式
サーバマシン データ取出
フロータブルサーバ兼務
DB
全サーバを候補に割り当て
クライアント
フロータブルサーバ
クライアント
フロータブルサーバ
ソート/結合処理の並列処理効果大
クライアント
DB
処理効果大
データ取出
© Hitachi, Ltd. 2014. All rights reserved. 30
フロータブルサーバ兼務
3.6 フロータブルサーバの決定方法
フロータブルサーバの決定方法は?
・台数決定方法⇒データ取出サーバ/フロータブルサーバ間での負荷分散・並列実行度を考慮し、フロータブルサーバでの処理時間が、データ取出サーバでのスキャン時間の4倍未満となるように決定なるように決定・対象のサーバ決定方法⇒候補サーバリストの中から、負荷を考慮して最適な候補サ バリストの中から、負荷を考慮して最適なサーバを決定
© Hitachi, Ltd. 2014. All rights reserved. 31
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 32
4.1 HiRDBシステムの構成(再掲)
HiRDBの構成は?
サーバマシン
■ HiRDB/シングルサーバ ■ HiRDB/パラレルサーバ(Shared-Nothing)
特定のデータは特定のサーバで参照
DBサーバマシン
クライアント
定 参
DB
DB
クライアントクライアント
DBクライアントクライアント
• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル• 1台のサーバマシン上で動作• 構築が容易、運用もシンプル
• 複数台のサーバマシン上で動作• 並列処理が可能• 複数台のサーバマシン上で動作• 並列処理が可能
© Hitachi, Ltd. 2014. All rights reserved. 33
• スケールアップも可能• スケールアップも可能 • スケールアップとスケールアウトが可能• スケールアップとスケールアウトが可能
4.2 クライアント~サーバマシン間のデータ転送①
結合検索の場合のデータの流れは?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.顧客名,表B.顧客名FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A顧客名 製品コード 製品動画(BLOB型データ)
A 100 データA
表A 顧客名,製品コード顧客名,製品コード
クライアント
結果返却
表A顧客名
A 100 デ タA
A 1000 データB
A 500 データC
表B
データ取出
結果返却
顧客名,製品コード
結合処理顧客名 製品コード 製品動画(BLOB型データ)
B 300 データD
B 10 データE
B 500 データC
表
クライアント
DB
表B各表のデータを処理対象のサーバマシンへ
顧客名,製品コード
© Hitachi, Ltd. 2014. All rights reserved. 34
データ転送
処 対象 サ漏れなく転送
4.3 クライアント~サーバマシン間のデータ転送②
もし、転送データの制御を行わなかったら?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.顧客名,表B.顧客名FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A顧客名 製品コード 製品動画(BLOB型データ)
A 100 データA
表A 顧客名,製品コード顧客名,製品コード
クライアント
結果返却
表AA 100 デ タA
A 1000 データB
A 500 データC
表B
顧客名返却しない
返却する
データ取出
結果返却結合処理顧客名 製品コード 製品動画(BLOB型データ)
B 300 データD
B 10 データE
B 500 データC
表
顧客名,製品コード
返却しない
返却する
クライアント
DB
表B黄色部分では結合検索で致しないため クライアントには
顧客名,製品コード
返却する
© Hitachi, Ltd. 2014. All rights reserved. 35
データ転送一致しないため、クライアントには返却不要である顧客名データも転送
4.4 クライアント~サーバマシン間のデータ転送③
もし、転送データの制御を行わなかったら?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.製品動画,表B.製品動画FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A
製品動画,製品コード
顧客名 製品コード 製品動画(BLOB型データ)
A 100 データA
表A製品動画,製品コード
クライアント
結果返却
表A製品動画
A 100 デ タA
A 1000 データB
A 500 データC
表B
返却しない
返却する
データ取出
結果返却結合処理顧客名 製品コード 製品動画(BLOB型データ)
B 300 データD
B 10 データE
B 500 データC
表
返却しない
返却する 製品動画,製品コード
クライアント
DB
表BBLOB型等のサイズが大きいデ タでは
返却する
製品動画,製品コード
© Hitachi, Ltd. 2014. All rights reserved. 36
データ転送サイズが大きいデータでは、通信量が膨大になる
4.5 クライアント~サーバマシン間のデータ転送④
HiRDBではどのように制御しているか?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.製品動画,表B.製品動画FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表AROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 A 100 データA
表A ROWID,製品コード ROWID,製品コード
データを一意に決定できる情報
クライアント
表AXXXXX1 A 100 データA
XXXXX2 A 1000 データB
XXXXX3 A 500 データC
表B
データ取出
結合処理表
ROWID,製品コード
ROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 B 300 データD
XXXXX2 B 10 データE
XXXXX3 B 500 データC
クライアント
DB
表BROWID,製品コード
XXXXX3 B 500 デ タC
結合に必要なデータとROWIDのみを転送
© Hitachi, Ltd. 2014. All rights reserved. 37
データ転送ROWIDのみを転送
4.6 クライアント~サーバマシン間のデータ転送⑤
HiRDBではどのように制御しているか?
サーバマシンデータ取得
データ転送SQL例)SELECT 表A.製品動画,表B.製品動画FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A
ROWIDROWID
ROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 A 100 データA
表A
クライアント
表AXXXXX1 A 100 データA
XXXXX2 A 1000 データB
XXXXX3 A 500 データC
表B
データ取得ROWID
結合処理表
ROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 B 300 データD
XXXXX2 B 10 データE
XXXXX3 B 500 データC
クライアント
DB
表BROWID
結合処理後でヒットしたROWIDを転送し、必要な
XXXXX3 B 500 デ タC
© Hitachi, Ltd. 2014. All rights reserved. 38
データ転送
を転送し、必要なデータを取得
4.7 クライアント~サーバマシン間のデータ転送⑥
HiRDBではどのように制御しているか?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.製品動画,表B.製品動画FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A製品動画
製品動画ROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 A 100 データA
表A
クライアント
表A製品動画
結果返却
XXXXX1 A 100 データA
XXXXX2 A 1000 データB
XXXXX3 A 500 データC
表B
データ取出製品動画
結果返却表
ROWID 顧客名 製品コード 製品動画(BLOB型データ)
XXXXX1 B 300 データD
XXXXX2 B 10 データE
XXXXX3 B 500 データC
クライアント
DB
表B製品動画
XXXXX3 B 500 デ タC
ROWIDから返却対象列を取得し クライアントへ返却
© Hitachi, Ltd. 2014. All rights reserved. 39
データ転送取得し、クライアントへ返却
4.8 クライアント~サーバマシン間のデータ転送⑦
HiRDBではどのように制御しているか?
サーバマシンデータ取出
データ転送SQL例)SELECT 表A.製品動画,表B.製品動画FROM 表A,表B WHERE 表A.製品コード=表B.製品コード
DB
表A製品動画
製品動画HiRDBでは、列データのサイズとSQL処理内容を基に 下
クライアント
表A製品動画
結果返却
ズとSQL処理内容を基に、下記から最適な方式を決定して制御している・最初から列デ タを取得して転送
データ取出製品動画
結果返却・最初から列データを取得して転送・最後にROWIDから取得して転送
クライアント
DB
表B製品動画
© Hitachi, Ltd. 2014. All rights reserved. 40
データ転送
目次目次
1. HiRDBとは?2 SQL実行プラン2. SQL実行プラン3. フロータブルサーバ4. プロセス間のDBデータ転送5. LIMIT処理
© Hitachi, Ltd. 2014. All rights reserved. 41
5.1 LIMIT処理とは?
LIMIT処理とは?
SQLの検索結果のうち,先頭からn行だけを受け取る
顧客名 … … … … … …
検索対象表
LIMIT指定なしの検索結果の場合
LIMIT指定ありの
A
A
A
A
顧客名 売上 …
A 100
A 10
検索結果の場合検索結果の場合
先頭n行だけの検索結果
顧客名 売上 …
A 100
A 10
・・・ ・・・ ・・・
A
B
A 1000
A 300
・・・ ・・・ ・・・
A 0
検索結果 A 1000
B
B
顧客名’A’のデータを
© Hitachi, Ltd. 2014. All rights reserved. 42
顧客名 デ タを抽出する場合
5.2 ソート処理指定あり時のLIMIT処理①
ソート処理と組み合わせた場合には?
もし、ヒットした全データソート後に,先頭からn行だけを受け取ると制御だと・・・
顧客名 … … … … … …
不要なデータまでソート 検索対象表
LIMIT指定なしの検索結果の場合
LIMIT指定ありの
顧客名 売上 …
A 0
A 10
A
A
A
A
検索結果の場合検索結果の場合顧客名 売上 …
A 0
A 10先頭n行だけの
検索結果 A 100
A 300
・・・ ・・・ ・・・
A 1000
・・・ ・・・ ・・・
A
B
A 100検索結果
B
B
売上でソート
© Hitachi, Ltd. 2014. All rights reserved. 43
5.3 ソート処理指定あり時のLIMIT処理②
HiRDBではどのように制御しているか?
数件だけ枠を持っていて、範囲外であれば読み捨てる。範囲内であれば既存の最大値を捨ててソート
顧客名 … … … … … …
検索対象表上限~下限のデータのみソート
LIMIT指定なしの検索結果の場合
LIMIT指定ありの
顧客名 売上 …
A 0
A 10
A
A
A
A
検索結果の場合検索結果の場合顧客名 売上 …
A 0
A 10先頭n行だけの
検索結果 A 100・・・ ・・・ ・・・
A
B
A 100検索結果
対象の範囲に収まらない B
B
対象の範囲に収まらないデータは読み捨て
(ex.売上データが300)
© Hitachi, Ltd. 2014. All rights reserved. 44
5.4 ソート処理指定あり時のLIMIT処理③
HiRDBではどのように制御しているか?
メモリ上でソートするケースと、作業表(※)上でソートするケースを制御
※ソート対象のデータサイズが作業表バッファサイズ未満であればメモリ上で処理
顧客名 … … … … … …
検索対象表
顧客名 売上 …
メモリ上でソート
内部閾値に基づきA
A
A
A
A 0
A 100
A 300
・・・ ・・・ ・・・
A 10000
内部閾値に基づき、メモリ使用量を考慮して、ソート処理領域を変更
サイズ<xxx
・・・ ・・・ ・・・
A
B
A 10000
顧客名 売上 …
作業表上でソート
取得する先頭 行が多く も B
B
顧客名 売上
A 0
A 100
A 300
・・・ ・・・ ・・・
サイズ≧xxx取得する先頭n行が多くても少なくても、同時に実行している全SQLで見ると効率がよい方法を選択
© Hitachi, Ltd. 2014. All rights reserved. 45
A 100000
最後に
エンドユーザから見ると 意識することが少ないSQLエンドユ ザから見ると、意識することが少ないSQL実行プラン生成。SQL実行時間遅いとエンドユーザは気になってしまうので、意識されないようにますます早く、技術者の方からは、早いけどどうなっているんだ?と気にしてもらえるようにします!もらえるようにします!
ご清聴ありがとうございました。
© Hitachi, Ltd. 2014. All rights reserved. 46
END
HiRDBのSQL実行プランはどのようにHiRDBのSQL実行プランはどのように決定しているのか?
/ /
株式会社 日立製作所 情報・通信システム社ITプラットフォーム事業本部 開発統括本部ソフトウ ア開発本部 DB設計部
2014/06/18
ソフトウェア開発本部 DB設計部
成田 正亮
© Hitachi, Ltd. 2014. All rights reserved. 47