私はこの質問が以前に尋ねられたことを理解します、しかし、ほとんどの場合それは特定のデータベースまたはテーブルに関して尋ねられます。私はこのサイトで誰かの特定のデータベースに関係なく2つのエンジンとそれらの違いを説明する答えを見つけることができません。
テーブルやデータベースの設計に関して、将来的にはより情報に基づいた決定を下せるようにしたいので、2つのストレージエンジンの違いに関する包括的な答えを探しています。
InnoDBとMyISAMとの主な違いは(「テーブルやデータベースの設計に関して」)、「参照整合性」と「トランザクション」のサポートです。
データベースで外部キー制約を強制する必要がある場合、またはデータベースでトランザクション(1つの作業単位として扱われる2つ以上のDML操作による変更、すべての変更の適用、またはすべての変更の取り消し)が必要な場合これらの機能はMyISAMエンジンには存在しないため、InnoDBエンジンを選択します。
それが2つの大きな違いです。もう1つの大きな違いは並行性です。 MyISAMでは、DMLステートメントはテーブルの排他的ロックを取得し、そのロックが保持されている間、他のセッションはテーブルに対してSELECTまたはDML操作を実行できません。
あなたが尋ねた2つの特定のエンジン(InnoDBとMyISAM)は異なる設計目標を持っています。 MySQLには、独自の設計目標を持つ他のストレージエンジンもあります。
したがって、InnoDBとMyISAMのどちらを選択するかの最初のステップは、InnoDBが提供する機能が必要かどうかを判断することです。そうでなければ、MyISAMは検討中です。
相違点についてのより詳細な議論は(このフォーラムでは)問題空間についてのより詳細な議論がなければかなり実用的ではありません...アプリケーションがデータベースをどのように使用するか、テーブルの数、挿入、更新、同時実行性の要件、レプリケーション機能など.
データベースの論理設計は、データ分析とユーザーの要件を中心にしなければなりません。リレーショナルデータベースを使用するという選択は後になるでしょうし、リレーショナルデータベース管理システムとしてMySQLを選ぶこと、そして各テーブルのためのストレージエンジンを選択することも後になるでしょう。
マイサム:
INNODB: