178 データベースによる並列処理

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