 |

|
徹底比較!! MySQLエンジン |
第1回:MySQLストレージエンジンの概要
著者:NTTデータ 藤塚 勤也 2006/8/1
|
|
|
1 2 3 次のページ
|
 |
はじめに
|
本連載で取り上げるMySQLは、非常に人気の高いオープンソースのRDBMSです。このMySQLの大きな特長は、ストレージエンジンを選択できるところにあります。そこで本連載では、MySQLのストレージエンジンに焦点をあて、様々なストレージエンジンの特長や構造を解説していきます。最後まで、お付き合いください。
|
MySQLとは
|
MySQLの概要についてはご存知の方も多いと思いますが、復習の意味も込めて簡単に紹介します。
MySQLは、MySQL社を中心として開発が進められているRDBMSで、オープンソースの標準的なプラットフォームを意味する「LAMP」という言葉(Linux/Apache/MySQL/PHP)に採用されるほど有名なオープンソースです。ライセンスとしては、GPLと商用ライセンスのデュアルライセンス形態で提供されています。バージョン5.0よりストアードプロシージャやトリガなどをサポートし、他のRDBMSと比べても遜色のない機能を備えたRDBMSになりました。
繰り返しになりますが、MySQLの最大の特長はストレージエンジンをテーブルごとに選択できる点です。そして、その選択したストレージエンジンによって特長が異なることです。
次に代表的な2つのストレージエンジンを示しますが、まったく異なる特長を持っていることがわかると思います。
- MyISAM
- テーブル単位のファイルによるデータ構造を持ち、トランザクション機能をサポートしていません。
- InnoDB
- テーブルスペース内に複数のテーブルやインデックスを格納するデータ構造を持ち、トランザクション機能をサポートしています。
表1:MySQLの代表的なストレージエンジン
なお、執筆開始時点で提供されているMySQLの最新バージョンは5.0.22です。また、ベータ版は5.1.11-betaが提供されています。
以下にMySQLに関する主要なWebサイトのURLを示します。MySQLに関する多くの情報がありますので、参考にしてください。
|
ストレージエンジンとは
|
まずはじめに、「ストレージエンジン」とは何かを説明します。通常、RDMBSはいくつかの構成要素によって成り立っており、SQL文を受け取って結果を返すデータベースエンジン部、アプリケーションとデータベースエンジンを結びつけるクライアントモジュールや様々なツール群などから成り立っています。
その中でもサーバ側にて動作するデータベースエンジンはRDBMSの心臓部であり、非常に多くの仕事を担っています。MySQLでは「MySQLサーバ」もしくは「MySQLデーモン」と呼ばれている部分に相当します。
|
データベースエンジンの動作
|
データベースエンジンがクライアントからSQL文を受け取ると、まずそのSQL文の解釈を行います。SELECT文なのかUPDATE文なのか、どんな条件式がついているのかなどを把握するためです。これをSQL文のパースと呼びます。
そして、次にどのようにデータを処理するかを決めます。インデックスがあるのかないのか、インデックスがあるならばそれを使った方が良いのか悪いのか、テーブルを結合するならばどのような方法で結合すると良いのかといったことを決定します。プランナやオプティマイザと呼ぶ機能がこの仕事を行います。
データの処理方法が決まると、はじめて実データへのアクセス処理が開始されます。実データがどのような形式で、ディスク上にどのように格納されているかといった情報が必要になります。ここが、ストレージエンジン部になります。
例えば、あるテーブルのレコードを順番に読み込む処理を行うにしても、そのテーブルがどのようなファイル形式でディスク上に格納されているかによって、具体的な処理は変わってしまいます。
テーブル単位でファイルが分離されている形式もあるでしょうし、1つのファイル内にいくつものテーブルデータを格納する形式もあるでしょう。もちろん、ストレージエンジンはこれらの情報を把握しています。
このように、ストレージエンジンとは、この実データへのアクセス処理を主に行う機能部分を指します。
|
1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社NTTデータ 藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。
|
|
|
|