|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
最短かつ最速にアクセスする「DB高速化技術」(前編)新たな索引や結合技術を駆使
出典:日経SYSTEMS 2007年7月号
134ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります) ポイント 目的地に早く到着したいなら,最短の経路を最速で行けばよい。これはデータベース(DB)でも同様だ(図1)。インデックスなどを使ってデータへの最短経路を見つけ,メモリー・アクセスを増やして,最速でたどり着く。DBにはそんな技術が詰まっている。
以下では,(1)データにたどり着く最短の道を選ぶ仕組みと,(2)アクセスのスピードを上げる仕組みの二つを解説していく。 説明の都合上,簡略化したテーブルとデータを使って図解する。 1と0のビット計算だけで絞り込む最短経路を選ぶ機能は,管理者が意図して利用するものと,SQL文の実行計画を決める「オプティマイザ」が実行するものがある。 前者の代表例がインデックスである。一般的には,B-Treeインデックスが使われる。しかし,「男女など,検索する値の種類が少ない場合は効果が薄い」(NTTデータ オープンソース開発センタ 技術開発担当 シニアスペシャリスト 藤塚勤也氏)。こうしたケースで最短経路を確保できるのが,ビットマップ・インデックスだ(図2)。このインデックスは,あるデータに該当するか否かを1と0で表す。そのため,「男かつ右利きである人の氏名」など,複数条件で検索する場合,ビット計算だけで必要なレコードを取り出せる。
なお,ビットマップ・インデックスの作成には時間がかかるので,更新や挿入が多いテーブルでは注意して使いたい。 ムダなデータは読み込まない必要なデータを取得するに当たっては,ムダなデータはできるだけ読み込みたくない。寄り道せずにゴールに向かう手法の一つが,「パーティショニング」と呼ぶ分割機能である(図3)。例えば,1年間の売り上げデータを格納したテーブルを,月ごとに論理的に分割して操作するといったことが可能になる。パーティション単位にアクセスすることで,ムダなデータの読み込みが防げる。
データに効率的にアクセスする方法に,並列処理がある(図3下)。SQL文の処理を複数のプロセスに分割し,テーブルに対して並行で実行する。アシストの岸和田隆氏(データベース事業部 技術部 課長)は,「パーティションのそれぞれに,並列処理で同時にアクセスすれば,より効率的にアクセスできる」と語る。 >>後編 連載新着連載目次へ >>
|