sql >> データベース >  >> RDS >> Mysql

MyISAMとInnoDBの違いは何ですか?

    InnoDBとMyISAMの主な違い(「テーブルまたはデータベースの設計に関して」について質問した)は、「参照整合性」と「トランザクション」のサポートです。

    外部キー制約を適用するためにデータベースが必要な場合、またはトランザクションをサポートするためにデータベースが必要な場合(つまり、2つ以上のDML操作によって行われた変更が単一の作業単位として処理され、すべての変更が適用されるか、すべての変更が元に戻されます)次に、これらの機能がMyISAMエンジンにないため、InnoDBエンジンを選択します。

    これらが2つの最大の違いです。もう1つの大きな違いは、並行性です。 MyISAMを使用すると、DMLステートメントはテーブルの排他ロックを取得し、そのロックが保持されている間、他のセッションはテーブルに対してSELECTまたはDML操作を実行できません。

    あなたが質問した2つの特定のエンジン(InnoDBとMyISAM)には、異なる設計目標があります。 MySQLには、独自の設計目標を持つ他のストレージエンジンもあります。

    したがって、InnoDBとMyISAMのどちらかを選択する際の最初のステップは、InnoDBが提供する機能が必要かどうかを判断することです。そうでない場合は、MyISAMを検討中です。

    問題空間のより詳細な議論がなければ、違いのより詳細な議論は(このフォーラムでは)かなり非現実的です...アプリケーションがデータベースをどのように使用するか、テーブルの数、テーブルのサイズ、トランザクションの負荷、選択の量、挿入、更新、同時実行要件、レプリケーション機能など。

    データベースの論理設計は、データ分析とユーザー要件を中心に行う必要があります。リレーショナルデータベースを使用するという選択は後で行われ、さらに後でリレーショナルデータベース管理システムとしてのMySQLの選択、そして各テーブルのストレージエンジンの選択が行われます。



    1. SQL Serverのデータベースですべてのチェックキーと外部キーの制約を無効にする方法(T-SQLの例)

    2. 各結合のカウント-最適化

    3. ListViewは、sqliteの名前に従ってドローアブルにある正しい画像を表示しません

    4. MariaDB10.6の新機能