- クライアントからの接続を受け付けて専用のスレッドを割り当てる。切断時にはスレッドは次の接続に備えてキャッシュ領域(接続プール)に保管される。これによって接続/切断のオーバーヘッドを軽減する
- SELECT文が以前に実行したものと一字一句違わない場合は、検索処理を実際に行う代わりに、事前にキャッシュしておいた検索結果をそのまま返す(クエリキャッシュ)
- クエリキャッシュにヒットしない場合は、送られたSQL文が構文として正しいかどうかの確認を行う(構文分析[パース]処理)
- 構文分析が正常に終了した場合はSQL文の実行計画を決定する。SQL文の実行計画とはテーブルへのアクセス方法を基底するもので、具体的にはインデックスの利用可否、利用する場合はどのインデックスを使うか、ジョインの際にどのテーブルを最初に読むかなどを決定する(オプティマイザ)
これらの作業が終わって始めて、実データへのアクセス処理が開始する。
このデータ書き込み(レコード処理)の実装方法をストレージエンジンという。
MySQLには様々なストレージエンジンが用意されており、その中でも一番広く使われているのが
InnoDBというストレージエンジンである。
(デフォルトはMyISAM)
InnoDBはMyISAMと違ってトランザクションをサポートしているというのが一番の特徴だが、
他にも
というACID特性がある。
追記
デフォルトのストレージエンジンは5.5からInnoDBになりました。
開発中のMySQL 5.5、デフォルトエンジンはInnoDB、200%の性能向上。「MySQL Conference & Expo」基調講演で紹介 - Publickey