ホームページ  >  記事  >  バックエンド開発  >  mySQLのMyISAMとInnoDBの違いは何ですか? MYSQLデータベースを最適化するにはどうすればよいですか?

mySQLのMyISAMとInnoDBの違いは何ですか? MYSQLデータベースを最適化するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-08-08 09:20:431043ブラウズ

MyISAM と InnoDB の基本的な違い

1. InnoDB は FULLTEXT 型インデックスをサポートしません。

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

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

4. DELETE FROM テーブルの場合、InnoDB はテーブルを再作成せず、行ごとに削除します。 MyISAM は innodb が行ロックを持つテーブルです

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

さらに、InnoDB テーブルの行ロックは絶対的ではありません。MySQL が SQL ステートメントの実行時にスキャンする範囲を決定できない場合、InnoDB テーブルはテーブル全体もロックします (たとえば、テーブル セット番号を更新します)。 =1 where name like " "2%"

6.InnoDB はさまざまなことをサポートします

実際の状況に応じてストレージ エンジンを選択します

一般に、複数のクエリがある場合は、myIsam を使用することをお勧めします。

トランザクション処理や外部キーが必要な場合は、InnoDB の方が良い方法かもしれません

MYSQL データベースを最適化する方法:

1. 最も適切なフィールド属性を選択し、定義されたフィールドの長さを減らします。フィールドをできるだけ多く使用し、フィールドを NOT NULL に設定するようにします。たとえば、「Province, Gender」、ENUM

2 に設定するのが最善です。subquery

3 の代わりに join を使用します。手動で作成した一時テーブルの代わりにユニオン(UNION)を使用します

4、トランザクション処理(追加と変更を同時に行うなどのデータの整合性を保証、両方が真の場合は両方実行され、一方が失敗した場合は両方が実行されます)失敗)

5, 適切なインデックス作成 (インデックスの作成方法は? インデックス作成の長所と短所は何ですか?)

6, SQL ステートメントを最適化する

7, Explain では、mysql 実行計画を確認できます

8、分割テーブル (垂直分割テーブル、水平分割テーブル?)

関連書籍

http://www.phpernote.com/mysql/500.html

http:// www.nowmagic.net/librarys/veda/detail/1899

以上、mysqlのMyISAMとInnoDBの違いを紹介しました。 MYSQL データベースを最適化するにはどうすればよいですか? 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。