MySQL ストレージエンジン
こんにちは、三橋です。
毎日暑い日々が続きますが、いかがお過ごしでしょうか?
今日のトピックは、Senior Technical Support Engineer である奥野からストレージエンジンについてのご紹介です。一緒にストレージエンジンについて勉強しましょう!
*******************************
MySQLが様々な用途で使われている理由として、様々な用途に対応できる柔軟性が挙げられます。その柔軟性を実現している技術の一つが「ストレージエンジン」です。MySQLは内部的にデータの格納やアクセスをするレイヤーを上手に仮想化・象化しており、テーブル単位でそのレイヤーを入れ替えることが能になっています。そのレイヤーのことをストレージエンジンといい、アプリケーションのアクセスパターンや要件に従ってストレージエンジンを入れ替えることで、様々なアプリケーションにおいて良好な性能を発揮することができるのです。ストレージエンジンはチューニングにおいてもっとも大きな要素の一つであり、エンジニアにとってももっとも興味をそるポイントのひとつです。
MySQLでは以下のようなストレージエンジンを使うことが出来ます。
== MyISAM ==
MySQLデフォルトのストレージエンジン。軽量だが多数の書き込みがあるようなアクセスパターンは苦手。トランザクション非対応。
== InnoDB ==
Innobase OYが開発したトランザクション対応ストレージエンジン。様々なアプリケーションによく適合するので最もよく使われている。
== MEMORY ==
メモリに全てのデータを格納するストレージエンジン。高速だがMySQLが再起動すると内容が消失する。一時的なデータ領域などに使用する。
== CSV ==
CSVファイル(カンマ区切りファイル)にデータを格納する。
== FEDERATED ==
他のMySQLサーバにあるテーブルをあたかもローカルにあるように見せる。
== MySQL Cluster ==
「並列」「負荷分散」「高可用性」型ストレージエンジン。多数のホストを用いてデータを分散して格納する。シェアードナッシング型。トランザクション対応。
※今月シンクイットで記事を書いたので参照してください。
ThinkIT 記事: 奥野幹也著 『[データベース夏の陣]MySQL Clusterを試す!』 http://www.thinkit.co.jp/article/95/
これらの他にもまだMySQLが提供しているストレージエンジンがありますし、サードパーティ製のストレージエンジンもあります。(NitroDB、SolidDB、PBXTなど)
ストレージエンジンに関する詳細は、マニュアルを参照してください。
http://dev.mysql.com/doc/refman/5.1/ja/pluggable-storage-overview.html
Mikiya Okuno, MySQL Support Engineer
Sun Microsystems KK, Tokyo, Japan
http://www-jp.mysql.com/
*******************************
いかがでしたか? 今後、テクニカルな側面からも MySQL について紹介していきますので、是非お付き合いください!
三橋

Leave a Reply