1. MySQLのデフォルトストレージエンジンの変更 MySQL 5.1 より前のバージョンでは、デフォルトの検索エンジンは MyISAM です。MySQL 5.5 以降では、デフォルトの検索エンジンは InnoDB に変更されます。 2. MyISAMとInnoDBストレージエンジンの主な機能 MyISAM ストレージ エンジンの特徴は、テーブル レベルのロック、トランザクションとフルテキスト インデックスのサポートがないことであり、バックエンド データベースとして一部の CMS コンテンツ管理システムに適しています。ただし、テーブル ロック構造は、同時実行性が高く、負荷の高い運用システムには不十分です。 MySQL 5.7 MyISAM ストレージ エンジンの機能は次のとおりです。 InnoDB ストレージ エンジンの機能は、行レベルのロック、トランザクション セキュリティ (ACID 互換性)、外部キーのサポート、FULLTEXT タイプのインデックスのサポートです (FULLTEXT タイプのインデックスはバージョン 5.6.4 以降でサポートされています)。 InnoDB ストレージ エンジンは、コミット、ロールバック、クラッシュ回復機能を備えたトランザクション セーフ ストレージ エンジンを提供します。 InnoDB は、膨大なボリュームを処理するときに最大のパフォーマンスを発揮するように設計されています。その CPU 効率は、おそらく他のディスクベースのリレーショナル データベース エンジンとは比べものにならないほど優れています。 MySQL 5.7 InnoDB ストレージ エンジンの機能は次のとおりです。 知らせ: InnoDB テーブルの行ロックは絶対的ではありません。SQL ステートメントの実行時に MySQL がスキャンする範囲を決定できない場合、InnoDB テーブルはテーブル全体をロックします (例: 2 つのタイプの主な違いは、InnoDB がトランザクション、外部キー、行レベルのロックをサポートしていることです。 MyISAM はこれをサポートしていません。したがって、MyISAM は小規模なプロジェクトでの使用にのみ適していると考えられることがよくあります。 3. MyISAMとInnoDBのパフォーマンステスト 次の2枚の写真はMyISAMとInnoDBの公式ストレステスト結果です。 CPU コアの数が増えるにつれて、InnoDB のスループットが向上しますが、MyISAM のスループットはほとんど変化しないことがわかります。明らかに、MyISAM のテーブル ロック メカニズムによって読み取りおよび書き込みのスループットが低下します。 4. トランザクションがサポートされているかどうか MyISAM は非トランザクション エンジンであり、MyISAM エンジンを搭載した MySQL は高速なストレージと取得、および全文検索機能を提供できるため、データ ウェアハウスなどの頻繁にクエリを実行するアプリケーションに適しています。 InnoDB はトランザクションセーフです。 トランザクションは高度な処理方法です。例えば、列の追加、削除、変更中にエラーが発生した場合、トランザクションをロールバックして復元することができますが、MyISAM ではこれができません。 5. MyISAMとInnoDBの構造の違い (1)各MyISAMはディスク上の3つのファイルに保存されます。
(2) ディスクベースのリソースは、InnoDB テーブルスペースのデータ ファイルとそのログ ファイルです。InnoDB テーブルのサイズは、オペレーティング システム ファイルのサイズによってのみ制限され、通常は 2 GB です。 6. MyISAMとInnoDBのテーブルロックと行ロックの説明 MySQL テーブル レベルのロックには、テーブル共有読み取りロック (テーブル読み取りロック) とテーブル排他書き込みロック (テーブル書き込みロック) の 2 つのモードがあります。これは何を意味するのでしょうか? MyISAM テーブルが読み取られる場合、同じテーブルに対する他のユーザーの読み取り要求はブロックされませんが、同じテーブルへの書き込み操作はブロックされます。また、MyISAM テーブルへの書き込み操作は、同じテーブルに対する他のユーザーの読み取りおよび書き込み操作をブロックします。 InnoDB の行ロックは、インデックス項目をロックすることによって実装されます。つまり、InnoDB は、データがインデックス条件を通じて取得される場合にのみ行レベルのロックを使用し、それ以外の場合はテーブル ロックを使用します。行レベルのロックは、ロックの取得および解放操作ごとに、テーブル ロックよりも多くのリソースを消費します。 2 つの InnoDB トランザクションがデッドロックすると、各トランザクションによって影響を受ける行数が計算され、行数が少ないトランザクションがロールバックされます。 InnoDB がロック シナリオに関与していない場合、InnoDB はそれを検出できません。タイムアウトをロックすることによってのみ解決できます。 7. データベーステーブルに特定の行数を保存するかどうか InnoDB はテーブル内の特定の行数を保存しません。つまり、 8. 選び方 MyISAM は次の場合に適しています:
InnoDB は次の場合に適しています:
各テーブルを作成するコードは、データ エンジンを指定する最後の TYPE パラメータを除いて同一であることに注意してください。 その他の違い: 1. AUTO_INCREMENT タイプのフィールドの場合、InnoDB にはこのフィールドのみを持つインデックスが含まれている必要がありますが、MyISAM テーブルでは他のフィールドとの結合インデックスを作成できます。 2. DELETE FROM table を使用すると、InnoDB はテーブルを再作成せず、行を 1 つずつ削除します。 3. LOAD TABLE FROMMASTER 操作は InnoDB では機能しません。解決策としては、まず InnoDB テーブルを MyISAM テーブルに変更し、データをインポートした後で InnoDB テーブルに戻すことです。ただし、これは追加の InnoDB 機能 (外部キーなど) を使用するテーブルには適用されません。 4. InnoDB ストレージ エンジンは MySQL サーバーと完全に統合されています。InnoDB ストレージ エンジンは、データとインデックスをメイン メモリにキャッシュするための独自のバッファー プールを維持します。 5. 自己増分フィールドの場合、InnoDB にはこのフィールドのみのインデックスが含まれている必要がありますが、MyISAM テーブル内の他のフィールドとの共同インデックスを作成できます。 6. テーブル全体をクリアする場合、InnoDB は行を 1 つずつ削除するため、非常に遅くなります。 MyISAM はテーブルを再構築します。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: Windows システムに VirtualBox と Ubuntu 16.04 をインストールするための詳細なチュートリアル
>>: JSはモバイル端末の画面を1つずつ上下にスライドさせる機能を実装します
目次序文ブラウザコンパイル版ローカルプリコンパイルバージョン要約する参照する序文vue3サンドボック...
コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...
この記事では、Vue開発ツリー構造コンポーネントの具体的なコードを例として紹介します。具体的な内容は...
まず、VirtualBox仮想マシンのネットワーク設定モードについて説明します。NAT+ホストオンリ...
2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...
このドキュメントの目的はreact-diagramフレームワーク モデルの Json シリアル化を説...
この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。初心者...
1. ダウンロードリンクをダウンロードするダウンロードをクリックします。Oracle アカウントにロ...
1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...
多くの場合、ホームページを作成するときに、Web ページ ヘッダー属性の設定を無視します。 Web ...
Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...
この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...
1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティ...
nohup コマンド: プロセスを実行しており、アカウントからログアウトしてもプロセスが終了しないと...
Docker の使用中に、いくつかの問題が発見されました。npm install や bundle ...