MySQL ストレージ エンジン MyISAM と InnoDB の比較

小云云
リリース: 2017-11-21 13:52:47
オリジナル
1657 人が閲覧しました

MySQL のデータは、さまざまなテクノロジーを使用してファイル (またはメモリ) に保存されます。これらの各テクノロジは、異なるストレージ メカニズム、インデックス作成手法、ロック レベルを使用し、最終的には幅広いさまざまな機能と機能を提供します。さまざまなテクノロジーを選択すると、速度や機能が向上し、アプリの全体的な機能が向上します。

MySQL には複数のストレージ エンジンがあり、MyISAM と InnoDB の 2 つは一般的に使用されます。これら 2 つのエンジンに関する基本概念をいくつか紹介します (詳細な紹介ではありません)。

MyISAM は MySQL のデフォルトのストレージ エンジンで、従来の ISAM タイプに基づいており、全文検索をサポートしていますが、トランザクションセーフではなく、外部キーをサポートしていません。各 MyISAM テーブルは 3 つのファイルに格納されます。frm ファイルはテーブル定義を格納し、データ ファイルは MYD (MYData)、インデックス ファイルは MYI (MYIndex) です。

InnoDB は、ロールバック、クラッシュ リカバリ、マルチバージョン同時実行制御、ACID トランザクション、行レベルのロック (InnoDB テーブルの行ロックは絶対的なものではありません。MySQL が実行時にスキャンを確実に実行できない場合) をサポートするトランザクション エンジンです。 SQL ステートメントのスコープ内で、InnoDB テーブルはテーブル全体 (たとえば、操作中の SQL ステートメントなど) もロックし、Oracle タイプと一致するロックフリーの読み取りメソッドを提供します。 InnoDB はテーブルとインデックスをテーブルスペースに保存します。テーブルスペースには複数のファイルを含めることができます。

主な違い:

MyISAM は非トランザクション的に安全ですが、InnoDB はトランザクション的に安全です。

MyISAM ロック粒度はテーブル レベルですが、InnoDB は行レベルのロックをサポートしています。

MyISAM はフルテキスト型インデックスをサポートしていますが、InnoDB はフルテキスト インデックスをサポートしていません。

MyISAM は比較的シンプルなので、効率の点で InnoDB より優れているため、小規模なアプリケーションでは MyISAM の使用を検討できます。

MyISAM テーブルはファイルの形式で保存されます。クロスプラットフォームのデータ転送で MyISAM ストレージを使用すると、多くの手間が省けます。

InnoDB テーブルは MyISAM テーブルよりも安全であり、データが失われないようにしながら、非トランザクション テーブルをトランザクション テーブルに切り替えることができます (alter table tablename type=innodb)。

アプリケーション シナリオ:

MyISAM は非トランザクション テーブルを管理します。高速な保存と取得、および全文検索機能を提供します。アプリケーションが多数の SELECT クエリを実行する必要がある場合は、MyISAM の方が良い選択肢です。
InnoDB はトランザクション処理アプリケーションに使用され、ACID トランザクションのサポートを含む数多くの機能を備えています。アプリケーションで大量の INSERT または UPDATE 操作を実行する必要がある場合は、マルチユーザーの同時操作のパフォーマンスを向上できる InnoDB を使用する必要があります。
共通コマンド:

(1) テーブルのストレージ タイプ (3 種類) を表示します:

show create table tablename
show table status from dbname where name=tablename
mysqlshow -u user -p password --status dbname tablename

(2) テーブルのストレージ エンジンを変更します:

alter table tablename type=InnoDB

(3) 次のパラメーターをコマンド ラインに追加して、新しくパブリッシュされたテーブルがデフォルトでトランザクションを使用するように mysql データベースを起動します。

--default-table- type=InnoDB

(4) デフォルトのテーブル タイプを一時的に変更します:

set table_type=InnoDB

'table_type' のような変数を表示します

上記は、MySQL の 2 つのストレージ エンジン、MyISAM の簡単な紹介です。と InnoDB、および 2 つのエンジンの違い 違いの紹介。

関連する推奨事項:

mysql の MERGE ストレージ エンジンの簡単な例

mysql トランザクションと mysql ストレージ エンジン_MySQL

2 つの MySQL エンジンの違いは何ですか

以上がMySQL ストレージ エンジン MyISAM と InnoDB の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート