MySQLが高性能と言われる理由のひとつとして「ストレージエンジンを選択できる」ことが挙げられる、ということは前回の記事で少し紹介しました。ではどのようなストレージエンジンが用意されており、それぞれどのような特徴があるのでしょうか。今回はその点について見ていきます。

ストレージエンジンは、DBMS(データベース管理システム)において、ストレージへのアクセスを担う機能です。どのようにデータを格納するか、トランザクション処理が可能か、メモリ内で高速に処理を行うかなど、ストレージエンジンごとに特徴があります。

MySQLでは、これらのストレージエンジンはモジュール化されており、目的に応じて入れ替えることができる、プラガブルストレージエンジンを採用しています。

用途に応じてストレージエンジンを選択することもできますし、やろうと思えば自身で開発することもできます。主要なストレージエンジンはオラクル社でMySQLサーバーと併せて開発されています。ほかにもユニークな機能を持ったものや特定の用途に対応したストレージエンジンなどが、ISVやコミュニティでも開発されています。

主なストレージエンジンは、以下のようなものがあります。

ストレージエンジン概要
InnoDB現在のMySQL標準のストレージエンジン。行ロックとトランザクションをサポートする。
MyISAM以前のMySQL標準のストレージエンジン。
Memory特定のテーブルをインメモリ上で扱うデータベース。
ArchiveSELECTおよびINSERTのみ可能。圧縮、ロギングや監査用。

最近のアプリケーションでは、トランザクションが必須となるケースが多いことや標準のストレージエンジンになったこともあり、InnoDBの利用が特に多くなっています。以前の標準ストレージエンジンだったMyISAMは、データファイルが容易に破損する可能性もあるため、利用される機会も減少しています。