データベースによる並列処 データベースによる並列処
理 理
情報論理工学研究室 情報論理工学研究室
04147175
04147175
三宅健太三宅健太本研究の背景 本研究の背景
データベース 検索
応答 ユーザ
膨大な量からな るデータ
1つの応答時間が、
非常に大きなもの となってしまうこと
がある。
× ×
3.
データのサイズが大きすぎる。 最大の原因!!
原因
2.
インデックスの張り方1. SQL
文の文法
パラレルクエリ
パラレルクエリ あらかじめデータを細分化し、
手分けして処理 する。
PHP
データベース 計算機
解決策
目的 分割されたテーブルにデータを挿入し、処理速 度の向上の目指す。
データベースと の連携に優れた プログラムの表
記法 挿入
テーブル
テーブル テーブル テーブル
パラレルクエ リ
逐次クエ リ•
データを順番に処理して いく•
データを分割し、結果をまと める。クエリ 結果 クエリ 結果
データベース環境の構築
準備
Windows
の標準環境には、DB
は付属していない。XAMPP MySQL TeraPad
Apache
データベース テキストエディタ必要なソフトウェアをインストールしなければならない。
MySQL
による逐次クエリ&
パラレルコードによるパラレルクエリ
研究内容
双方のクエリを実行し、それぞれ処理時間を測定 する。
それぞれの結果を検証し、双方の結果を比較する。検証手順
[1]
データの分割・挿入[2]MySQL
による各テーブルへのクエリ処理[3]
パラレルコードによる各テーブルへのクエ リ[4]
結果をまとめる•
各テーブルを(T 1 ---T i (2<=i<=10))
とし、テーブル全体をマー ジして比較用のテーブルT 0
を作成する。T0
例
文字列 文字列
•
分割なし• 2
分割T2 T1
300
万レコード150
万レコード150
万レコード•
各クエリごとにレコード数が均等になるように2
~10
個のデ ータに分割・挿入する。入力データは、文字列(a
~z
)をシ ャッフルしたもの。[1]
データの分割・挿入挿入 挿入
文字列
T2 T1
挿入
MySQL
例
• 2
分割T0
MySQL
マージ結合
[3]
パラレルコードによる各テーブルへのクエリ
•
各テーブルにパラレルコードを使用して、”sql”
と配列され た文字列を含む行を出力すると命令し、その処理速度を 測定する。T0
MySQL
例
•
分割なし•2
分割T0
MySQL
マージテーブル 逐次テーブル
クエリ 結果表示 クエリ 結果表示
T0
MySQL
例
•
分割なし• 2
分割MySQL
クエリ 結果 クエリ 結果
T1 T2
[2]MySQL
による各テーブルへのクエリ処理
•
各テーブルに入力された文字列(a
~z
)から、”sql”
と配列され た文字列を含む行を出力すると命令し、その処理速度を測定する。•
出力された結果を作成した一時ファイルに追記し、処 理速度の測定の結果を表示する。一時テーブル
例
•
分割なし•2
分割結果 追記追記 結果表示 結果 追記 一時テーブル 集計 結果表示
T0 T1.
T
2出力
[4]
結果をまとめる•
各テーブルの処理がすべて完了しているかをチェックし、1. MySQL
による逐次クエリの結果を、各分割ごとに比較2.
パラレルコードによるパラレルクエリの結果を、各分割ごとに比較3.
双方のクエリの結果を検証し、比較並列度合いによる処理速度の変化
0.0
秒1.0
秒2.0
秒3.0
秒4.0
秒5.0
秒6.0
秒7.0
秒8.0
秒9.0
秒1
分割2
分割3
分割4
分割5
分割6
分割7
分割8
分割9
分割分割
(Ⅰ )MySQL
(Ⅱ )パラレルコード
MySQL
による逐次クエリ&
パラレルコードによるパラレルクエリ
結果
まとめ
双方のクエリは、共に各テーブルを分割化することにより、処理速度が向上することが示された。
逐次クエリよりもパラレルクエリのほうが、より高いパ フォーマンスが得られる。 1
台の計算機を用いての処理であるため、並列処理 可能な処理数に限界が見られた。今後の課題