クラスタリングは、実際には InnoDB データベース エンジンに関連しています。したがって、インデックスをクラスタリングするときは、InnoDB と MyISAM という 2 つの MySQL データベース エンジンを使用します。 InnoDBとMyISAMのデータ分布の比較 CREATE TABLE test (col1 int NOT NULL, col2 int NULLではない、 主キー(col1)、 キー(col2)); まず、上記の SQL ステートメントを使用してテーブルを作成します。ここで、col1 は主キーであり、両方のデータ列に対してインデックスが作成されます。すると、データの主キー値は 1 ~ 10000 となり、ランダムな順序でデータベースに挿入されます。 MyISAMデータ分散 MyISAM のデータ保存ロジックは比較的単純で、データが挿入された順序でデータ テーブルを作成します。直感的には、次の図が示されます。 挿入順に「行ごとに」データが生成されていることがわかります。その前に行番号フィールドもあり、インデックスが見つかったときに行インデックスをすばやく見つけるために使用されます。 具体的な詳細を見てみましょう: 上図は、MyISAM エンジンで主キーに応じて確立されたインデックスの具体的な実装を示しています。主キーがリーフ ノードに順番に配置されている一方で、ノードにはデータベース テーブル内の主キーの特定の行番号も格納されていることがわかります。上で述べたように、この行番号はテーブル内のデータの位置をすばやく見つけるのに役立ちます。この行番号は、主キーが配置されている特定のデータ行を指すポインターとして理解することもできます。 では、col2 に基づいてインデックスを作成するとどうなるでしょうか?何か違うのでしょうか?答えはノーです。 したがって、結論としては、MyISAM で作成されたインデックスが主キー インデックスであるかどうかに実際には違いはありません。唯一の違いは、それが「主キー インデックス」であるということです。 InnoDB データ分散 InnoDB はクラスター化インデックスをサポートしているため、MyISAM でのインデックス実装は異なります。 まず、主キーに基づくクラスター化インデックスが InnoDB 上でどのように実装されるかを見てみましょう。 まず、MyISAM 上の主キー インデックスと同様に、ここでのインデックスのリーフ ノードにも主キー値が含まれ、主キー値が順番に並べられています。違いは、各リーフ ノードにトランザクション ID、ロールバック ポインター、およびその他の非主キー列の値 (ここでは col2) も含まれていることです。したがって、InnoDB 上のクラスター化インデックスは、元のテーブル内のすべての行データを主キーに従って整理し、それをインデックスのリーフ ノードに配置することがわかります。これは主キーインデックスにおける MyISAM との違いです。対応する主キー値を見つけた後、MyISAM 主キー インデックスはポインタ (行番号) を使用してテーブル内の対応するデータ行を見つける必要があります。InnoDB 主キー インデックスは、すべてのデータ情報をインデックスに格納し、インデックス内で直接検索できます。 InnoDB のセカンダリ インデックスを見てみましょう。 InnoDB の主キー インデックスとは異なり、セカンダリ インデックスはリーフ ノードにすべての行データ情報を格納するのではなく、インデックス列の値に加えて、データ行に対応する主キー情報のみを格納することがわかります。 MyISAM では、セカンダリ インデックスはプライマリ キー インデックスと同じであることがわかっています。インデックス列の値に加えて、ポインタ (行番号) 情報のみが格納されます。 2 つのエンジンのセカンダリ インデックスを比較します。つまり、ポインターを保存することと主キー値を保存することの利点と欠点です。 主キー値を最初に保存すると、ポインターのみを保存する場合よりも多くのスペース オーバーヘッドが発生します。ただし、データ テーブルが分割されたり、その他の構造変更が行われたりすると、主キー値を格納するインデックスは影響を受けませんが、ポインターを格納するインデックスを再度更新して管理する必要がある場合があります。 2 つのエンジンの 2 つのインデックスを 1 つのグラフで比較します。 要約する これで、クラスター化インデックスに関する MySQL 学習チュートリアルに関するこの記事は終了です。MySQL クラスター化インデックスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ApacheとTomcatによるクラスタ環境構築プロセスの分析
>>: Vue3 でタイマーコンポーネントをカプセル化する方法
入力ボックスの値を取得する複数の方法最初の方法は、制御されていないコンポーネントの取得です2番目の方...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...
1. 最初の方法は、ローカルのTomcatを起動してJSPを表示することです。 tomcatのweb...
序文特に bash 環境では、スクリプトの実行方法によって結果が異なります。スクリプトを実行する方法...
1. コマンドラインでMySQLサービスを停止します: net stop mysql stop my...
1. 概要ユーザーは、アクセスする Web アプリケーションがインタラクティブでスムーズに実行される...
mybatis を学習しているときにエラーが発生しました。エラーの内容は次のとおりです。データベース...
接続数を取得する --- 最大接続数を取得します。SHOW VARIABLES LIKE '...
1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...
目次1. 親コンポーネントと子コンポーネントの関係2. 小道具3. $エミット4. $親V. 結論 ...
1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...
--1. mysql用の新しいグループとユーザーを作成する # ユーザー追加 -M -s /sbin...
目次1 ストレステストの指標1.1 秒あたり1.2 クォータ1.3 平均処理時間(RT) 1.4 同...
目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...
1 選択タグは閉じられている必要があります <select></select>...