MySqlのMyISAMタイプとInnoDBタイプの違いは何ですか?
主な違いは、InnoDBはトランザクションをサポートしますが、MyISAMはサポートしないことです。
他にも多くの違いがありますが、私が知っている一般的な違いは次のとおりです。
私はグーグル検索またはMySQLサイトがより詳細に他の多くの違いをもたらすと確信しています。
InnoDBとMyISAM
機能とパフォーマンスの比較:
これらの違いに照らして、InnoDBとMyISAMには、互いに独自の長所と短所があります。シナリオによっては、それぞれが他よりも適しています。
InnoDBの利点
InnoDBのデメリット
MyISAMの利点
MyISAMのデメリット
比較は非常に簡単です。 InnoDBは、頻繁な挿入と更新を必要とするデータクリティカルな状況に適しています。一方、MyISAMは、データの整合性にまったく依存せず、ほとんどの場合、データを選択して表示するだけのアプリケーションでパフォーマンスが向上します。
詳細については、こちらで確認することもできます: MyISAMまたはInnoDB MySQLエンジン?
お役に立てれば。
MyISAMは、InnoDBがまだサポートしていない(非標準SQL)フルテキストインデックス作成をサポートしています。これが、今日MyISAMを使用する唯一の理由です。
MyISAMとInnoDBの最も重要な違いは、InnoDBがトランザクションと外部キーをサポートしていることです。外部キーと関連機能(たとえば、削除を自動的にカスケードする)が必要な場合は、InnoDBを使用する必要があります。
InnoDBは、ほとんどの用途でMyISAMよりも低速ですが、ロックメカニズムが優れているため、特定の条件で高速に実行できます。 MyISAMは、挿入/更新の実行中にテーブル全体を読み取り用にロックします。 InnoDBは行レベルのロックを実行できるため、テーブルでの複数の同時書き込みと読み取りが可能です。
MyISAMとInnoDBの詳細については、MySQLドキュメントを参照してください。
http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html
InnoDBの機能1.完全なACID(Atomicity、Consistency、Isolation、およびDurability)に準拠した完全なトランザクション機能を提供します。
行レベルのロックがあります。行レベルのロックをサポートすることで、挿入のたびにエンジンがテーブルをロックすることなく、InnoDBテーブルにデータを追加できます。これにより、データベース内の情報の回復と保存の両方が高速化されます。
InnoDBシステムの鍵は、データベース、キャッシュ、およびインデックス構造であり、インデックスとデータの両方がメモリにキャッシュされ、ディスクに保存されます。これにより、非常に高速なリカバリが可能になり、非常に大きなデータセットでも機能します。
InnoDBは外部キー制約をサポートします
InnoDBは空間データ型をサポートします(空間インデックスなし)
Innodbは非ロックのANALYZETABLEをサポートしており、サーバーがインデックス統計に飛び込んでテーブルが開いたときにインデックス情報を取得するため、サーバーが長時間実行されている場合にのみ必要です。
Innodbには個別のインデックスファイルがないため、開く必要はありません。
Innodbは、プライマリキーの順序(ALTERの後)で一度に1行ずつインデックスを構築します。つまり、インデックスツリーは最適な順序で構築されず、フラグメント化されます。InnoDBは構築できないため、現在InnoDBインデックスをデフラグする方法はありません。 MySQL5.0でソートすることによるインデックス。 InnoDBインデックスを削除して再作成しても、データによってはインデックスが断片化する可能性があります。
テーブルには最大1000列を含めることができます。
InnoDBの内部最大キー長は3500バイトですが、MySQL自体はこれを3072バイトに制限しています。 (MySQL 5.0.17より前の非64ビットビルド、および5.0.15より前のすべてのビルドの場合は1024バイト。)
InnoDBテーブルはFULLTEXTインデックスをサポートしていません。
MYISAMの機能
詳細については、 http://faisalbhagat.blogspot.com/2014/09/innodb-vs-myisam.html をご覧ください。
主な違いは、InnoDBは transactions をサポートしているのに対し、MyISAMはサポートしていないことです。
MyISAMとは異なり、InnoDBではNFSで問題が発生する可能性があります。
注意
信頼性がデータの考慮事項である場合は、NFSボリューム上のデータファイルまたはログファイルを使用するようにInnoDBを構成しないでください。潜在的な問題は、OSとNFSのバージョンによって異なり、競合する書き込みからの保護の欠如、最大ファイルサイズの制限などの問題が含まれます。
MyISAMとInnoDBも、データを異なる方法でディスクに保存します。 MyISAMは、データベースにちなんで名付けられたディレクトリに保存されている、各テーブルのデータファイルとインデックスファイルを使用します。 InnoDBは、ibdata1というファイルにすべてをまとめているようです。
トランザクションのサポートが主な違いですが、 長時間実行されるSELECTクエリとUPDATEステートメントが混在している の場合、テーブルレベルのロックが問題になる可能性があります。
InnoDBとMyIsamの違いの説明は次のとおりです。
いくつかの違い:
MyISAMは、すべてのテーブルをロックしてファイルをファイルシステムに直接コピーするのがかなり簡単なので、バックアップに関してはより便利です。 (Perlスクリプトであるmysqlhotcopyはmysql afaikの一部です)
InnoDBはもう少し複雑で、ファイルをコピーするだけでは、すぐに使用できる別のマシンに復元できないため、機能しません。
ただし、InnoDBホットコピーを提供する商用ソフトウェアがあります。