序文 Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだけあり、すべてのデータ ストレージ管理メカニズムは同じです。 MySQL データベースはさまざまなストレージ エンジンを提供します。ユーザーは、さまざまな要件に応じてデータ テーブルに異なるストレージ エンジンを選択したり、ニーズに応じて独自のストレージ エンジンを作成したりできます。 MySQLの主なストレージエンジンの違い MySQL のデフォルトのストレージ エンジンは MyISAM です。他によく使用されるものとしては、InnoDB、MERGE、MEMORY (HEAP) などがあります。 いくつかの主要なストレージエンジン MyISAM は非トランザクション テーブルを管理し、高速なストレージと取得、および全文検索機能を提供します。 MyISAM は MySQL のデフォルトのストレージ エンジンです。 create で新しいテーブルを作成するときに、新しいテーブルのストレージ エンジンが指定されていない場合は、デフォルトで MyISAM が使用されます。各 MyISAM はディスク上の 3 つのファイルに保存されます。ファイル名はテーブル名と同じで、拡張子は .frm (テーブル定義を保存)、.MYD (MYData、データを保存)、.MYI (MYIndex、インデックスを保存) になります。データ ファイルとインデックス ファイルを異なるディレクトリに配置することで、IO を均等に分散し、速度を向上できます。 InnoDB ストレージ エンジンはトランザクション処理アプリケーションに使用され、コミット、ロールバック、クラッシュ回復機能によるトランザクションの安全性を提供する ACID トランザクション サポートなどの多くの機能を備えています。ただし、MyISAM ストレージ エンジンと比較すると、InnoDB は書き込み効率が低く、データとインデックスを保持するためにより多くのディスク領域を占有します。 メモリはすべてのデータをメモリ内に保存し、一時テーブルで使用して、参照やその他の同様のデータの迅速な検索が必要な環境で非常に高速なアクセスを提供できます。メモリはハッシュインデックスを使用するため、データアクセス速度が非常に高速です。 マージを使用すると、MySQL DBA または開発者は、同等の MyISAM テーブルを論理的にグループ化し、1 つのオブジェクトとして参照できます。データ ウェアハウスなどの VLDB 環境に非常に適しています。 さまざまなストレージエンジンの水平比較
ストレージエンジン操作の表示と構成 1. show engines; コマンドを使用して、現在のデータベースでサポートされているストレージ エンジンを表示します。 2. テーブル定義構造やその他の情報を表示するには、次のコマンドを使用します。 Desc[ribe] tablename; //データテーブルの構造を表示します。Show create table tablename; //テーブル作成時に指定したENGINEを表示するためのテーブル作成ステートメントを表示します。 show table status like 'tablename'\G はテーブルの現在のステータス値を表示します 3. テーブルのストレージエンジンを設定または変更する データベース テーブルを作成するときにストレージ エンジンを設定するための基本的な構文は次のとおりです。 テーブルtableName(を作成します columnName (列名1) type (データ型) attri (属性設定)、 columnName (列名2) type (データ型) attri (属性設定)、 ……..) エンジン = エンジン名 ストレージエンジンを変更するには、次のコマンドを使用します。 テーブル tableName エンジン =engineName を変更します サーバー全体またはソリューション全体で同じストレージ エンジンを使用する必要はありません。ソリューション内の各テーブルに異なるストレージ エンジンを使用できます。 InnoDB ストレージ構造 InnoDB はページ ストレージ構造を使用します。以下は InnoDB のテーブル スペース構造図です。 ページの保存形式は次の図に示されています。 ページのストレージは次の部分で構成されます。
ページ ヘッダー、最大/最小仮想レコード、およびページ フッターはすべて、ページ内で固定された保存場所を持ちます。 InnoDB インデックス構造 InnoDB はインデックスを保存するために B+Tree を使用します。 Innodb テーブルには複数のインデックスが含まれる場合があり、各インデックスは B+ ツリーを使用して格納されます。インデックスには、クラスター化インデックスとセカンダリ インデックスが含まれます。クラスター化インデックスは、テーブルの主キーをインデックス キーとして使用し、テーブルのすべてのフィールドを含みます。セカンダリ インデックスには、インデックス キーとクラスター化インデックス キー (プライマリ キー) の内容のみが含まれ、他のフィールドは含まれません。各インデックスは B+ ツリーです。各 B+ ツリーは多数のページで構成され、各ページのサイズは通常 16K です。 B+ ツリーの組織構造から、B ツリーのページは次のように分割できます。 リーフ ノード: B ツリーのレベル 0 にあるページで、記録されたすべてのコンテンツが格納されます。 典型的な B+ ツリー構造: 上の図からわかるように、同じレベルのページは二重リンクリストによって接続されています。 一般的に言えば、B+ ツリーの左端のリーフ ノードから始めて右にスキャンすると、小さいものから大きいものまで B+ ツリーのすべてのデータを取得できます。したがって、リーフノードには次の特性があります。 ページ内のデータはインデックス キーによってソートされます。 ページ内の任意のレコードのインデックス キー値は、その左側の兄弟ページ内の任意のレコードの値より小さくありません。 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)
>>: Vue ElementUI は非同期読み込みツリーを実装します
目次序文1. 一度限りの計画タスクの紹介2. コマンド3. 1回限りのスケジュールタスクを作成する4...
目次序文原因現象なぜ?分析要約する序文今日は、非常に典型的な MySQL の「落とし穴」についてお話...
目次主に使用されるPostmanの機能データの暗号化と復号化さまざまなパラメータ設定実際に送信された...
Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...
著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...
開発動向: html (ハイパーテキスト マークアップ言語) - xhtml (拡張ハイパーテキスト...
1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...
目次1. v-for: 配列の内容を走査する(よく使われる) 2. v-for: オブジェクトのプロ...
ドラッグ アンド ドロップ API は、ドラッグ可能な要素を HTML に追加し、ドラッグ可能な豊富...
MySQL データベースは、特に JAVA プログラマーの間で広く使用されています。クラウド データ...
1. 遅いクエリログ1.1 MySQL ログの種類ログは、データベースの操作や、ユーザーがデータベー...
キャッシュを使用する目的は、バックエンドの負荷を軽減し、Web サイトの同時実行性を向上させることで...
1. エラーの再現MySQL データベースにはアクセスできますが、データベース テーブルを読み取るこ...
目次1. 使いやすい2. 関数内でジェネリックを使用する3. クラス内でジェネリックを使用する4. ...
1. 「stripslashes($_POST['json']);」メソッドを使用し...