注目の書籍

好評発売中!

プロマネやってはいけない

プロマネやってはいけない
計画・管理偏
現場のノウハウが
詰まった“禁じ手集”

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

情報システム

絵で見るテクノロジ

日経SYSTEMS

最短かつ最速にアクセスする「DB高速化技術」(前編)

新たな索引や結合技術を駆使

2007/09/11
松浦 龍夫=日経SYSTEMS
出典:日経SYSTEMS 2007年7月号  134ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります)

ポイント
・高度なインデックスやジョインを利用し,最短経路でデータにアクセス
・メモリー不足を自律的に解消し,キャッシュのヒット率を高める
・インメモリーDBは全データをメモリーで処理し,高速化を図る

 目的地に早く到着したいなら,最短の経路を最速で行けばよい。これはデータベース(DB)でも同様だ(図1)。インデックスなどを使ってデータへの最短経路を見つけ,メモリー・アクセスを増やして,最速でたどり着く。DBにはそんな技術が詰まっている。

図1●データベース高速化技術のポイント
図1●データベース高速化技術のポイント
ビットマップ・インデックスなどを使い、データにたどり着く最短の道を選ぶ。また、できるだけメモリーにデータをキャッシュさせておくことで、アクセスのスピードを上げる、という二つのポイントがある
[画像のクリックで拡大表示]

 以下では,(1)データにたどり着く最短の道を選ぶ仕組みと,(2)アクセスのスピードを上げる仕組みの二つを解説していく。

 説明の都合上,簡略化したテーブルとデータを使って図解する。

1と0のビット計算だけで絞り込む

 最短経路を選ぶ機能は,管理者が意図して利用するものと,SQL文の実行計画を決める「オプティマイザ」が実行するものがある。

 前者の代表例がインデックスである。一般的には,B-Treeインデックスが使われる。しかし,「男女など,検索する値の種類が少ない場合は効果が薄い」(NTTデータ オープンソース開発センタ 技術開発担当 シニアスペシャリスト 藤塚勤也氏)。こうしたケースで最短経路を確保できるのが,ビットマップ・インデックスだ(図2)。このインデックスは,あるデータに該当するか否かを1と0で表す。そのため,「男かつ右利きである人の氏名」など,複数条件で検索する場合,ビット計算だけで必要なレコードを取り出せる。

図2●ビットマップ・インデックスの仕組み
図2●ビットマップ・インデックスの仕組み
実データの比較をせず,ビットマップ・インデックスの論理演算だけでデータを探し出せるので,必要なデータに効率よくたどり着ける
[画像のクリックで拡大表示]

 なお,ビットマップ・インデックスの作成には時間がかかるので,更新や挿入が多いテーブルでは注意して使いたい。

ムダなデータは読み込まない

 必要なデータを取得するに当たっては,ムダなデータはできるだけ読み込みたくない。寄り道せずにゴールに向かう手法の一つが,「パーティショニング」と呼ぶ分割機能である(図3)。例えば,1年間の売り上げデータを格納したテーブルを,月ごとに論理的に分割して操作するといったことが可能になる。パーティション単位にアクセスすることで,ムダなデータの読み込みが防げる。

図3●パーティショニングと並列処理の仕組み
図3●パーティショニングと並列処理の仕組み
パーティショニングは,テーブルを論理的に分割した「パーティション」単位でデータを操作するので,不要なデータにアクセスしなくて済む。パラレル・クエリーに代表される並列処理は,複数のサーバー・プロセスに分割して処理を進めることで,高速化を図っている
[画像のクリックで拡大表示]

 データに効率的にアクセスする方法に,並列処理がある(図3下)。SQL文の処理を複数のプロセスに分割し,テーブルに対して並行で実行する。アシストの岸和田隆氏(データベース事業部 技術部 課長)は,「パーティションのそれぞれに,並列処理で同時にアクセスすれば,より効率的にアクセスできる」と語る。

>>後編 

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介