by shigemk2

当面は技術的なことしか書かない

MySQLサーバ内部の論理構造

MySQLサーバーは、大きく上位層と下位層に分かれる。
上位層は接続の受け付けやクエリの解析を行い、
下位層は上位層の要求に従って動作するストレージエンジンが置かれている。

実際にファイルの操作やデータの検索をする部分が、ストレージエンジンである。

MySQLでは数種類のストレージエンジンが用意されており、
テーブル単位でストレージエンジンを指定できる。

各テーブルは、指定のストレージエンジン形式で保存できる。

同一データベース内で、それぞれのテーブルがすべて違うストレージエンジンを使用することも
可能であり、ストレージエンジンの異なるテーブル同士をクエリで結合することも可能である。

このアーキテクチャにより、以下のメリットを得る

  • 機能の拡張を行う場合、同じエンジンを変えていくと、バグの不安や互換性の問題が起こる。内部の実装が根本的に変わる場合にストレージエンジンを分けることで、これまでの安定したエンジンを使い続けられるようになり、バグや互換性の問題を切り離すことが出来る
  • 特性の異なるストレージエンジンをTPOに合わせて選択することで、最適なパフォーマンスを得ることができる

サポートしているストレージエンジンを確認するためには、

mysql > SHOW ENGINES;

と叩けばよい。

以下ストレージエンジンの種類。

MEMORY
データおよびインデックスのすべてをメモリに収めるストレージエンジンである。mysqldを停止したり
コンピュータの電源を落とすとデータは消えるが、テーブルの定義は残る

MyISAM
MySQLで最も利用されているストレージエンジン。

MERGE
複数のMyISAMテーブルをひとつに見せかけることのできるストレージエンジン

InnoDB
トランザクション機能を持つストレージエンジン

P136より。

MySQL徹底入門 第3版 ?5.5新機能対応?

MySQL徹底入門 第3版 ?5.5新機能対応?