MySQL事始 ストレージエンジン(1) アーキテクチャ概要

EnterpriseZine / 2012年1月26日 0時0分

今回はMySQLのストレージの中でも、最も利用されているInnoDBについて解説します。トランザクションに対応したInnoDBはMySQL 5.5からデフォルトのストレージエンジンとなりました。

■MySQL独自のストレージエンジン

 他のRDBMS同様、様々なプログラミング言語からアクセスするためのドライバ類が用意されています。MySQLではこれらをコネクタ(Connector)と読んでいます。アプリケーションからのアクセスではこれらの経由でMySQLサーバに接続後、ユーザ名やパスワードによる認証を通過します。その後SQL文がパーサ(Parser)にて構文解析され、オプティマイザ(Optimizer)にて実行計画が最適化されます。

 実際にどのようにデータを格納するか、トランザクションを処理するかなどはMySQL独自の「ストレージエンジン」で実装されています。他のデータベース製品ではこのストレージエンジンを実装していません。ストレージエンジンはデータベースの表ごとに設定できるため、ストレージエンジンを切り替えることでアプリケーション特性に応じた最適なパフォーマンスを発揮することができます。主要なストレージエンジンはオラクル社でMySQLサーバとあわせて開発されています。他にもユニークな機能を持ったものや特定の用途に対応したストレージエンジンなどが、コミュニティや様々な企業で開発されています。
ストレージエンジンの役割

 ストレージエンジンの役割は大きく分けて下記の6点になります。
ストレージエンジンの役割 データ保管 どこに格納するか、データレイアウト インデックス 実装アルゴリズム (Btree, B+, T etc) メモリ利用 データキャッシュ、バッファリング トランザクション ACID、分散トランザクション、MVCC、分離レベル 同時実行性 ロック、排他制御 独自機能 MyISAMの空間情報インデックスなど

 多くのストレージエンジンはデータをディスク上に格納しますが、MEMORYストレージエンジンはデータをメインメモリに格納するため、特定の表だけをインメモリデータベースとして扱うこともできます。一方でMySQLサーバで使用するSQL文は多くの場合ストレージエンジンに依存しないため、一つのSQL文の中でディスクにデータを格納した表のデータとインメモリデータベースのデータをJOINすることも可能です。
代表的なストレージエンジンInnoDBデフォルトのエンジン、トランザクション対応、外部キーサポートMyISAMMySQL 5.1以前のデフォルト、ファイルシステムの置き換えMemory特定のテーブルをインメモリデータベースにArchiveSELECTおよびINSERTのみ可能、圧縮、ロギングや監査などNDBCLUSTER非共有型クラスタMySQL Clusterの実装、高可用性構成CSV データをCSVファイルに格納しSQL文で参照更新MergeMyISAMのテーブルをパーティションとして扱うためのエンジンFederated 別のMySQLサーバ上のテーブルに透過的にアクセスExampleエンジンを開発するためのベースBlackhole書き込んだデータを全て飲み込む”/dev/null”的なエンジン

  • 前のページ
    • 1
    • 2
  • 次のページ
EnterpriseZine

トピックスRSS

ランキング