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つずつ上下にスライドさせる機能を実装します
apt-get を使用してインストールすると、非常に遅くなります。国内のソースを変更すると、この問題...
データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...
MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...
自社製品にクリック後1~2秒待機時間があるボタン(確認メールを送信する)があるため、クリック後の1~...
ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...
目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...
HTML を初めて使用する多くの人にとって、テーブル <table> は最もよく使用され...
著者は最近、仕事でパフォーマンスのボトルネックの問題に遭遇しました。MySQL テーブルには毎日約 ...
OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...
目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...
手順は以下のとおりです1. dockerグループを作成する: sudo groupadd docke...
更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...
目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...
デフォルトでは、セルの幅と高さはコンテンツに応じて自動的に調整されますが、セルの幅と高さを手動で設定...
目次質問再生暗黙的な変換要約する参照する質問仕事中、1 つの SQL クエリ ステートメントのみを実...