実践ハイパフォーマンスMySQL1章
MySQLのアーキテクチャと歴史
最適化 MySQLはクエリを解析して内部構造(解析ツリー)を作成する。
クエリの実行に必要な情報をオプティマイザに渡してなるべく効率化する。
トランザクション
トランザクションは、1つの作業単位としてアトミックに扱われるSQLクエリの集まりである。 この集まりのうち1つでも実行できなければ全てのクエリが適用されない。
ACIDテスト Atomicity(アトミック性) Consistency(一貫性) Isolation(分離性) Durability(永続性)
アトミック性 1つでも実行できないクエリがあればそのトランザクションは無効になること。
一貫性 ある操作をすればどんな時でも一意の結果が返ってくること。
分離性 あるクエリと次のクエリは関連しない?
永続性
分離レベル
SQL規格は4つの分離レベルを定義しています。
以下は引用です。
「パフォーマンスを上げるためにある程度の読み込み不都合を妥協するか、パフォーマンスを落としてもいいから不都合を発生しないようにするか」 という設定のレベル
MySQLのストレージエンジン
ストレージエンジンとは、MySQLで実際にデータの保存処理を行っている部分です。
以下の二つが代表的なストレージエンジンです 1. MyISAM 2. InnoDB
MyISAM * ロックはテーブル単位
InnoDB InnoDBは現在MySQLのデフォルトストレージエンジンです。 * トランザクション機能がある * ロックはレコード単位 * オンラインバックアップ
2つのうちどちらを使うのかは、「InnoDBにない機能が必要でない限りInnoDBを使用する」という指針であり、なるべくInnoDBを使う方が吉のようです。