注目の書籍

好評発売中!

IT業界徹底研究就職ガイド2013年版

IT/ネット業界で働くと いうことを分かりやす く解説。2013年3月卒 業の学生向けの1冊。

必聴講座ご紹介

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

エムオーテックス


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

ヴイエムウェア


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

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

オープンソース/Linux

オープンソース

ITpro

[MySQLウォッチ]第40回 パーティショニングで高速化し大量データに備える

2008/07/14
佐藤栄一

 大量のデータを1つのテーブルに格納すると何かと不便となる。処理対象が大量だけに検索をはじめとして処理時間が大きくなる。現実の生活は、手に余る大量の物を小分けにするというテクニックをよく使う。データベースでもこの手法は有効である。大量データを小分けにすることで、処理の高速化と格納効率を向上することが可能である。今回は、MySQL 5.1の新機能の筆頭に上がっているパーティショニングを解説する。

MySQL 5.1の注目機能パーティショニングとは

 パーティショニングとは、テーブルを分割して性能を向上させるための技術だ。MySQL 5.0でもテーブルの分割機能はあった。複数のテーブルを連結して1つのテーブルに見せかけるMARGEストレージエンジン(テーブル)、SELECTステートメントを結合するUNIONなどがある。これらの機能は、もともと別々のテーブルを結合して処理する後処理的な位置づけになる。

 パーティショニングは、1つのテーブルを分割して格納する抜本的な機能だ。1つのテーブルを分割することによって、高速化や要領拡大を実現する。

パーティショニングの基本動作

 パーティショニングは、テーブルの作成時に指定する。DBエンジン(テーブルタイプ)の指定のように、CREATE TABELステートメントの最後にパーティショニングの指定を行う。テーブルの基本的動作は、通常のテーブルと変りない。そのため、データの操作では、パーティショニングを意識する必要はない。

図1●パーティショニングの基本動作
図1●パーティショニングの基本動作

 データのデータ検索の際には、オプティマイザによって、必要なパーティションのみアクセスするようになる。そのため、検索時間が短縮化される。もちろん、振り分け対象のカラム以外の検索は、高速化されない。

パーティショニングによるレコードの降り分け方法

 パーティショニングは、対象となるカラムの値によって、各パーティションに振り分ける。パーティションに振り分ける方法には、RANGE、LIST、HASH、KEYの4種類が指定できる。

パーティショニング 内容
RANGE パーティションごとに範囲を指定して振り分ける
LIST パーティションごとに格納する値で振り分ける
HASH 1つのカラムの値を式の結果で振り分ける
式を指定しないとMOD関数を使用する
大量のデータにはLINEAR HASHが用意されている
KEY 1つ以上のカラムの値をMD5関数やPassword関数で評価して分割する

 RANGEおよびLISTは、指定したカラム(フィールド)の値によって、パーティションに振り分ける。そのため、どのパーティションにどのようなデータが含まれるか容易にわかる。逆にパーティションによって、格納するデータ量に偏りが発生するかもしれない。

 HASHおよびKEYは、パーティションに格納するデータ量に偏りがないように機械的に振り分けを行う。

>>SUB(コンポジット)パーティション
次ページ以降はITpro会員(無料)の方のみお読みいただけます。
会員の方は、 ログインしてご覧ください。
まだ会員でない方は、ぜひ登録(無料)していただき、ITproの豊富なコンテンツをご覧ください。

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

nikkeibpITpro

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