違い: 1. MyISAM はトランザクションをサポートしませんが、InnoDB はトランザクションをサポートします。 2. InnoDB はデータ行のロックをサポートしますが、MyISAM は行のロックをサポートせず、テーブル全体のロックのみをサポートします。 3. InnoDB は外部キーをサポートしますが、MyISAM はサポートしません。 4. InnoDB の主キー範囲は MyISAM の最大 2 倍と大きくなります。
#MyISAM と InnoDB の違い
MySQL はデフォルトで MyISAM を使用します。 MyISAM はトランザクションをサポートしませんが、InnoDB はトランザクションをサポートします。 InnoDB の AUTOCOMMIT はデフォルトでオンになっています。つまり、各 SQL ステートメントはデフォルトでトランザクションにカプセル化され、自動的に送信されます。これは速度に影響するため、トランザクションを形成するには開始とコミットの間に複数の SQL ステートメントを表示するのが最善です。提出してください。 InnoDB はデータ行のロックをサポートしますが、MyISAM は行のロックをサポートせず、テーブル全体のロックのみをサポートします。つまり、同じ MyISAM テーブル上の読み取りロックと書き込みロックは相互に排他的です。MyISAM が読み取りと書き込みを同時に行うとき、待機キューに読み取り要求と書き込み要求の両方がある場合、デフォルトの書き込み要求が優先されます。読み取りリクエストが最初に到着するため、クエリ プロセスが長時間ブロックされるため、MyISAM は大量のクエリと変更が共存する状況には適していません。 MyISAM はロック テーブルであるため、時間のかかる読み取り操作は他の書き込みプロセスを枯渇させます。 InnoDB は外部キーをサポートしますが、MyISAM はサポートしません。 InnoDB の主キー範囲は MyISAM の最大 2 倍と大きくなります。 InnoDB はフルテキスト インデックス作成をサポートしていませんが、MyISAM はサポートしています。全文インデックス作成とは、char、varchar、text の各単語 (ストップ ワードを除く) に対して逆ソート インデックスを確立することを指します。 MyISAM の全文インデックスは、中国語の単語の分割をサポートしていないため、実際には役に立ちません。ユーザーは、単語の分割の後にスペースを追加して、それをデータ テーブルに書き込む必要があります。さらに、中国語の文字が 4 文字未満の単語は、ストップ ワードと同様に無視されます。 MyISAM は GIS データをサポートしますが、InnoDB はサポートしません。つまり、MyISAM は、ポイント、ライン、ポリゴン、サーフェスなどの空間データ オブジェクトをサポートします。 where を指定しない Count(*) は、InnoDB よりもはるかに高速に MyISAM を使用します。 MyISAM にはカウンターが組み込まれているため、カウントするときにカウンターから直接読み取ります (*) が、InnoDB はテーブル全体をスキャンする必要があります。したがって、InnoDB で count(*) を実行する場合、一般に where が伴い、where には主キー以外のインデックス列が含まれている必要があります。なぜここで「主キー以外」が特に強調されるのでしょうか? InnoDB のプライマリ インデックスは生データと一緒に保存され、セカンダリ インデックスは別々に保存され、プライマリ キーを指すポインタが存在するためです。したがって、count(*) だけの場合は、セカンダリ インデックスを使用してスキャンする方が高速ですが、主キーは主にインデックスをスキャンし、同時に生データを返すために使用されます。 推奨学習:以上がmysqlのinnodbとmyisamの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。