【MySQL】MyISAM と InnoDBの違いについてのお話
Photo by Boitumelo Phetla on Unsplash
みなさん、こんにちは
今日はMyISAM と InnoDBの違いについて話していこうと思います。
ストレージエンジンについて
みなさんはストレージエンジンについてご存知でしょうか??ストレージエンジンとは、テーブルにデータを書き込んだり読み出したりする部分を担っているプログラムのことで、代表的なストレージエンジンにはMyISAM と InnoDBというものがあります。
MyISAM と InnoDBのメリットデメリット
MyISAM
メリット -> シンプル、高速に動作、フルテキスト検索に対応、大容量テーブルに向いている。
デメリット -> トランザクションや外部キー制約をサポートしない、REPAIR TABLEで修正できることが多いがクラッシュ時に使えなくなる、テーブルレベルでロックをかけるという点でロックの粒度が荒い(他人がデータを更新している間はそのテーブルにアクセスができなくなる)
InnoDB
メリット -> トランザクションをサポート、外部キー制約が装備されている、クラッシュ時のリカバリに対応、列レベルでロックを実施
デメリット -> フルテキスト検索ができない、パフォーマンスが悪い
複数人で一つのテーブルに更新をかける場合や整合性を求められる場合はInnoDB、logデータなどすぐに参照しなかったり、大容量のものはMyISAMのストレージエンジンが向いてる感じですかね。
ちなみにテーブル毎にストレージエンジンが選択できるようになっています。
何もなければInnoDBにしておくのが無難ではないでしょうか??