学んだことをまとめていく
MySQLのストレージエンジン
InnoDBエンジン
・MySQL5.5以降デフォルトのストレージエンジンはInnoDBエンジン
・MySQL(innoDB)のデフォルトトランザクション分離レベルはREPETABLE READ
・行ロックを行う
・ネクストキーロックアルゴリズムによってファントムリードを防ぐ
・InnoDBテーブルは、クラスタ化インデックスに基づいて構築される。
・「innodb_file_per_table」は設定しないと死ぬけど、MySQL5.6.6からはデフォルトでON。設定する場合一つのやり方としてmy.cnfには以下のように記載
[mysqld]
innodb_file_per_table = 1
MyISAMエンジン
・テーブルロックを行う
・テーブル作成時にDELETE
・サーバー、システムクラッシュした際にインデックスが破壊される危険が高い
それ以外のストレージエンジン
MySQLはデフォルトでは行指向のストレージエンジンだが、大容量のデータに対しては列指向のアプローチのほうが効果的な場合も。列指向のストレージエンジンだとInfobrightが代表格。
感想
色んなストレージエンジンがあるけど、よほどのことがない限りはInnoDBを選択すれば問題ないから、InnoDBについてもっと理解する必要がありそう。
参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.2.13.2 クラスタインデックスとセカンダリインデックス
MySQLの「InnoDB」と「MyISAM」についての易しめな違い - (2015年までの)odaillyjp blog
O'Reilly Japan - 実践ハイパフォーマンスMySQL 第3版