相違点: 1. InnoDB はトランザクションをサポートしますが、MyISAM はサポートしません; 2. InnoDB は外部キーをサポートしますが、MyISAM はサポートしません; 3. InnoDB はクラスター化インデックスですが、MyISAM は非クラスター化インデックスですインデックス; 4. Innodb はフルテキスト インデックスをサポートしませんが、MyISAM はフルテキスト インデックスをサポートします; 5. InnoDB はテーブルおよび行レベルのロックをサポートしますが、MyISAM はテーブル レベルのロックをサポートします; 6. InnoDB テーブルには一意のインデックスが必要ですが、 Myisam には必要ありません; 7. 保存ファイルが異なります。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
InnoDB: MySQL のデフォルトのトランザクション エンジンは、最も重要で広く使用されているストレージ エンジンでもあります。多数の短期トランザクションを扱うように設計されており、ほとんどの場合、短期トランザクションは正常に送信され、ロールバックされることはほとんどありません。 InnoDB のパフォーマンスと自動クラッシュ回復機能により、非トランザクション ストレージのニーズに人気があります。別のストレージ エンジンを使用する特別な理由がない限り、InnoDB エンジンを優先する必要があります。
MyISAM: MySQL 5.1 以前のバージョンでは、MyISAM がデフォルトのエンジンです。 MyISAM は、フルテキスト インデックス作成、圧縮、空間関数 (GIS) などを含む多数の機能を提供しますが、MyISAM はトランザクションと行レベルのロックをサポートしておらず、疑いのない欠陥は、トランザクション後に安全に回復できないことです。クラッシュ。
MySQL における MyISAM と InnoDB の違い:
1. InnoDB はトランザクションをサポートしますが、MyISAM はサポートしません。 InnoDB のステートメント デフォルトでは、言語はトランザクションにカプセル化され、自動的に送信されますが、速度に影響するため、トランザクションを形成するには、begin と commit の間に複数の SQL 言語を入れるのが最善です。 ##2. InnoDB は外部キーをサポートしますが、MyISAM はサポートしません。外部キーを含む InnoDB テーブルを MYISAM に変換すると失敗します;
3. InnoDB はインデックス構造として B ツリーを使用するクラスター化インデックスであり、データ ファイルは (プライマリ(テーブル データ ファイル自体は B ツリーによって編成されたインデックス構造です)、両方とも主キーが必要であり、主キーを使用したインデックス作成は非常に効率的です。ただし、補助インデックスには 2 つのクエリが必要です。最初に主キーをクエリし、次に主キーを介してデータをクエリします。したがって、主キーが大きすぎると、他のインデックスも大きくなるため、主キーは大きすぎないでください。
MyISAM は非クラスター化インデックスであり、インデックス構造として B ツリーも使用します。インデックスとデータ ファイルは分離されており、インデックスにはデータ ファイルのポインタが保存されます。 。主キーインデックスと副キーインデックスは独立しています。
つまり、InnoDB の B ツリー主キー インデックスのリーフ ノードはデータ ファイルであり、補助インデックスのリーフ ノードは主キーの値ですが、MyISAM のリーフ ノードはデータ ファイルです。 B ツリー主キー インデックスと補助インデックスは両方ともデータ ファイルのアドレス ポインタです。
4. InnoDB はテーブル内の特定の行数を保存せず、実行時にテーブル全体が必要です。テーブルスキャンからカウント(*)を選択します。 MyISAM は変数を使用してテーブル全体の行数を保存します。上記のステートメントを実行するときは、変数を読み取るだけで済み、非常に高速です (WHERE 条件を追加できないことに注意してください);
それではなぜですか? InnoDB にこの変数がない場合はどうなるでしょうか?
InnoDB のトランザクション特性により、同じタイム テーブル内の行数はトランザクションごとに異なります。そのため、カウント統計では、Store ではなく、現在のトランザクションでカウントできる行数が計算されます。クイッククエリの合計行数。 InnoDB は、オプティマイザが別のインデックスの使用を要求しない限り、可能な限り最小のインデックスを走査しようとします。セカンダリ インデックスが存在しない場合、InnoDB は他のクラスター化インデックスも走査しようとします。InnoDB によって維持されるバッファ (バッファ プール) にインデックスが完全に存在しない場合、カウント操作にはさらに時間がかかります。合計行数を記録するテーブルを作成し、INSERT/DELETE 中にプログラムで対応するデータを更新させることができます。上で述べた問題と同様、現時点で複数のトランザクションがある場合、この解決策はあまり役に立ちません。おおよその行値でニーズを満たすのに十分な場合は、SHOW TABLE STATUS
5 を試してください。Innodb はフルテキスト インデックス作成をサポートしていませんが、MyISAM はフルテキスト インデックス作成をサポートしています。フルテキスト インデックス作成の分野におけるクエリ効率の観点から、MyISAM はますます高速になっています。追記: InnoDB 5.7 以降ではフルテキスト インデックス作成がサポートされています
6. MyISAM テーブルはクエリ操作のために圧縮できます。
#7. InnoDB はテーブルおよび行 (デフォルト) レベルのロックをサポートしますが、MyISAM はテーブル レベルのロックをサポートします
InnoDB の行ロックは、物理的な行レコードをロックするのではなく、インデックスに実装されます。サブテキストは、アクセスがインデックスにヒットせず、行ロックが使用できない場合、テーブル ロックに縮退するということです。
例:
t_user(uid, uname, age, sex) innodb; uid PK 无其他索引 update t_user set age=10 where uid=1; 命中索引,行锁。 update t_user set age=10 where uid != 1; 未命中索引,表锁。 update t_user set age=10 where name='chackca'; 无索引,表锁。
8. InnoDB テーブルには一意のインデックス (主キーなど) が必要です (ユーザーが指定しない場合、ユーザーは/デフォルトの主キーとして機能する非表示の列 Row_id を生成します). そして Myisam はそれを持つことができません
9. Innodb ストレージ ファイルには frm と ibd が含まれますが、Myisam は frm、MYD、 MYI
Innodb: frm はテーブル定義ファイル、ibd はデータ ファイルです。
Myisam: frm はテーブル定義ファイル、myd はデータ ファイル、myi はインデックス ファイルです。
##選択方法:
1. トランザクションをサポートしますか?そうであれば、innodb を選択してください。そうでない場合は、MyISAM を検討してください。
2. ほとんどのテーブルが読み取りクエリのみである場合は、MyISAM を検討してください。読み取りとクエリの両方がある場合は、MyISAM を検討してください。書き込みを行う場合は、InnoDB を使用してください。
3. システムがクラッシュした後、MyISAM が回復するのはさらに困難になりますが、許容できますか?
4. Innodb は、 MySQL 5.5 バージョン以降にリリースされました。MySQL のデフォルト エンジン (以前の MyISAM) になったことで、その利点は誰の目にも明らかです。何を使用すればよいかわからない場合は、InnoDB を使用してください。少なくとも悪くはありません。
InnoDB が主キーとして自動インクリメント ID を使用することを推奨するのはなぜですか?
回答: ID の自動インクリメントにより、B インデックスが挿入されるたびに右から展開されるようになり、B ツリーや頻繁なマージと分割を回避できます ( UUID を使用する場合と比較して)。文字列主キーとランダム主キーを使用すると、データがランダムに挿入されるため、効率が悪くなります。
#innodb エンジンの 4 つの主な機能## バッファーの挿入、二重書き込み、適応型ハッシュ インデックス (ahi)、読み取り先へ (先を読む)
[関連する推奨事項: mysql ビデオ チュートリアル
]以上がmysqlのMyISAMとInnoDBの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLインデックスのカーディナリティは、クエリパフォーマンスに大きな影響を及ぼします。1。高いカーディナリティインデックスは、データ範囲をより効果的に狭め、クエリ効率を向上させることができます。 2。低カーディナリティインデックスは、完全なテーブルスキャンにつながり、クエリのパフォーマンスを削減する可能性があります。 3。ジョイントインデックスでは、クエリを最適化するために、高いカーディナリティシーケンスを前に配置する必要があります。

MySQL学習パスには、基本的な知識、コアの概念、使用例、最適化手法が含まれます。 1)テーブル、行、列、SQLクエリなどの基本概念を理解します。 2)MySQLの定義、作業原則、および利点を学びます。 3)インデックスやストアドプロシージャなどの基本的なCRUD操作と高度な使用法をマスターします。 4)インデックスの合理的な使用や最適化クエリなど、一般的なエラーのデバッグとパフォーマンス最適化の提案に精通しています。これらの手順を通じて、MySQLの使用と最適化を完全に把握できます。

MySQLの実際のアプリケーションには、基本的なデータベース設計と複雑なクエリの最適化が含まれます。 1)基本的な使用法:ユーザー情報の挿入、クエリ、更新、削除など、ユーザーデータの保存と管理に使用されます。 2)高度な使用法:eコマースプラットフォームの注文や在庫管理など、複雑なビジネスロジックを処理します。 3)パフォーマンスの最適化:インデックス、パーティションテーブル、クエリキャッシュを使用して合理的にパフォーマンスを向上させます。

MySQLのSQLコマンドは、DDL、DML、DQL、DCLなどのカテゴリに分割でき、データベースとテーブルの作成、変更、削除、データの挿入、更新、削除、複雑なクエリ操作の実行に使用できます。 1.基本的な使用には、作成可能な作成テーブル、INSERTINTO INSERTデータ、クエリデータの選択が含まれます。 2。高度な使用法には、テーブル結合、サブQueries、およびデータ集約のためのグループに参加します。 3.構文エラー、データ型の不一致、許可の問題などの一般的なエラーは、構文チェック、データ型変換、許可管理を介してデバッグできます。 4.パフォーマンス最適化の提案には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、およびデータの一貫性を確保するためのトランザクションの使用が含まれます。

INNODBは、ロックメカニズムとMVCCを通じて、非論的、一貫性、および分離を通じて原子性を達成し、レッドログを介した持続性を達成します。 1)原子性:Undologを使用して元のデータを記録して、トランザクションをロールバックできることを確認します。 2)一貫性:行レベルのロックとMVCCを介してデータの一貫性を確保します。 3)分離:複数の分離レベルをサポートし、デフォルトでrepeatable -readが使用されます。 4)持続性:Redologを使用して修正を記録し、データが長時間保存されるようにします。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

MySQLは、中小企業に適しています。 1)中小企業は、顧客情報の保存など、基本的なデータ管理にMySQLを使用できます。 2)大企業はMySQLを使用して、大規模なデータと複雑なビジネスロジックを処理して、クエリのパフォーマンスとトランザクション処理を最適化できます。

INNODBは、次のキーロックメカニズムを通じてファントムの読み取りを効果的に防止します。 1)Next-KeyLockingは、Row LockとGap Lockを組み合わせてレコードとギャップをロックして、新しいレコードが挿入されないようにします。 2)実際のアプリケーションでは、クエリを最適化して分離レベルを調整することにより、ロック競争を削減し、並行性パフォーマンスを改善できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
