Mysql は PHP 開発に必須のツールです。MySQL の MyISAM と InnoDB の違いをご存知ですか?

PHP中文网
リリース: 2018-04-09 17:07:46
オリジナル
2139 人が閲覧しました

構成の違い:

各 MyISAM はディスク上に 3 つのファイルとして保存されます。最初のファイルの名前はテーブルの名前で始まり、拡張子はファイルの種類を示します。

.frm ファイルにはテーブル定義が保存されます。

データファイルの拡張子は.MYD(MYData)です。

インデックスファイルの拡張子は.MYI(MYIndex)です。

ディスクベースのリソースは、InnoDB テーブルスペースデータファイルとそのログファイルです。InnoDB テーブルのサイズは、オペレーティングシステムファイルのサイズによってのみ制限されます。
トランザクション処理:

MyISAM タイプのテーブル。パフォーマンスを重視しており、InnoDB タイプよりも実行が高速です。ただし、InnoDB はトランザクション サポート、外部キー、および大量の SELECT 操作を実行する場合の高度なデータベース機能を提供しません。 MyISAM の方が良い選択です

1. データが大量の INSERT または UPDATE を実行する場合、パフォーマンス上の理由から、InnoDB テーブルを使用する必要があります

2。DELETE FROM テーブルの場合、InnoDB はテーブルを再作成しません。行ごとに削除します。

3.LOAD TABLE FROM MASTER 操作は InnoDB では機能しません。解決策は、まず InnoDB テーブルを MyISAM テーブルに変更し、データをインポートした後にそれを InnoDB テーブルに変更することです。ただし、追加の InnoDB 機能が使用されるためです。 (外部キーなど) ) テーブルは適用されません

AUTO_INCREMENT の操作

テーブルごとに 1 つの AUTO_INCREMEN カラムの内部処理。

MyISAM は、INSERT および UPDATE 操作のためにこの列を自動的に更新します。これにより、AUTO_INCREMENT カラムが高速化されます (少なくとも 10%)。シーケンスの先頭の値を削除すると、その値を再度使用することはできません。 (AUTO_INCREMENT列が複数列インデックスの最後の列として定義されている場合、シーケンスの先頭から削除された値を再利用することが可能です)。

AUTO_INCREMENT 値は、ALTER TABLE または myisamch でリセットできます

AUTO_INCREMENT タイプのフィールドの場合、InnoDB にはこのフィールドのみのインデックスが含まれている必要がありますが、MyISAM テーブルでは、他のフィールドとの結合インデックスを確立できます

さらに優れた機能高速な auto_increment 処理

テーブルに AUTO_INCREMENT カラムを指定すると、データ ディクショナリ内の InnoDB テーブル ハンドルには、カラムに新しい値を割り当てるために使用される自動インクリメント カウンタと呼ばれるカウンタが含まれます。

自動インクリメントカウンターはディスクではなくメインメモリにのみ保存されます

この計算機のアルゴリズム実装については、

InnoDB での AUTO_INCREMENT カラムの仕組み

テーブル内の特定の行数

を参照してください。 select count( *) from table の場合、MyISAM は単に保存された行の数を読み取るだけです。 count(*) ステートメントに where 条件が含まれている場合、2 つのテーブルの操作は同じではありません。 table.number、つまり、テーブルから select count(*) を実行するとき、InnoDB はテーブル全体をスキャンして、行数を計算する必要があります

lock

テーブル ロック


は行ロック (行レベルでのロック) を提供します。これは、Oracle のタイプと一致します。 SELECT での非ロック読み取り さらに、MySQL が SQL ステートメントの実行時にスキャンする範囲を決定できない場合、InnoDB テーブルは行ロックもロックします。テーブル全体。たとえば、名前が「%aaa%」の場合、テーブルセット num=1 を更新します

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!