私は、データベースへの書き込みが大量に含まれるプロジェクトに取り組んでいます (挿入が 70%、読み取りが 30% )。この比率には、読み取り 1 回と書き込み 1 回と見なす更新も含まれます。読み取りはダーティな場合があります (たとえば、読み取り時に 100% 正確な情報は必要ありません)。
問題のタスクでは、1 時間あたり 100 万件を超えるデータベース トランザクションが実行されます。
MyISAM と InnoDB の違いについて Web 上でたくさんの情報を読みましたが、このタスクで使用する特定のデータベース/テーブルには MyISAM が明らかに最適な選択肢のように思えます。私が読んだところによると、行レベルのロックがサポートされているため、トランザクションが必要な場合は InnoDB が適しているようです。
このタイプの負荷 (またはそれ以上) を経験した人はいますか? MyISAM が最適な方法でしょうか?
ベストアンサー1
私は簡単に議論したこの質問を表にまとめると、InnoDBとMyISAMのどちらを使用するかを判断できます。
どのような状況でどの DB ストレージ エンジンを使用すべきかについての概要を以下に示します。
MyISAM InnoDB ---------------------------------------------------------------- 全文検索が必要 はい 5.6.4 ---------------------------------------------------------------- 取引が必要 はい ---------------------------------------------------------------- 頻繁な選択クエリ はい ---------------------------------------------------------------- 頻繁な挿入、更新、削除 はい ---------------------------------------------------------------- 行ロック(単一テーブルでの複数処理) はい ---------------------------------------------------------------- リレーショナルベース設計 はい
まとめ
- ほとんどすべての状況において、InnoDBが最良の選択です
- しかし、頻繁に読むが、ほとんど書き込まないので、MyISAMを使用する
- MySQL <= 5.5 での全文検索にはMyISAMを使用します