MySQLが高性能と言われる理由のひとつとして「ストレージエンジンを選択できる」ことが挙げられる、ということは前回の記事で少し紹介しました。ではどのようなストレージエンジンが用意されており、それぞれどのような特徴があるのでしょうか。今回はその点について見ていきます。
ストレージエンジンは、DBMS(データベース管理システム)において、ストレージへのアクセスを担う機能です。どのようにデータを格納するか、トランザクション処理が可能か、メモリ内で高速に処理を行うかなど、ストレージエンジンごとに特徴があります。
MySQLでは、これらのストレージエンジンはモジュール化されており、目的に応じて入れ替えることができる、プラガブルストレージエンジンを採用しています。
用途に応じてストレージエンジンを選択することもできますし、やろうと思えば自身で開発することもできます。主要なストレージエンジンはオラクル社でMySQLサーバーと併せて開発されています。ほかにもユニークな機能を持ったものや特定の用途に対応したストレージエンジンなどが、ISVやコミュニティでも開発されています。
主なストレージエンジンは、以下のようなものがあります。
| ストレージエンジン | 概要 |
|---|---|
| InnoDB | 現在のMySQL標準のストレージエンジン。行ロックとトランザクションをサポートする。 |
| MyISAM | 以前のMySQL標準のストレージエンジン。 |
| Memory | 特定のテーブルをインメモリ上で扱うデータベース。 |
| Archive | SELECTおよびINSERTのみ可能。圧縮、ロギングや監査用。 |
最近のアプリケーションでは、トランザクションが必須となるケースが多いことや標準のストレージエンジンになったこともあり、InnoDBの利用が特に多くなっています。以前の標準ストレージエンジンだったMyISAMは、データファイルが容易に破損する可能性もあるため、利用される機会も減少しています。
