この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、詳細は以下の通りです。 MySQL では、MyISAM は非クラスター化インデックスを使用し、InnoDB ストレージ エンジンはクラスター化インデックスを使用します。 クラスター構造の特徴:
ページ分割はなぜ発生するのでしょうか? これは、クラスター化インデックスがバランスバイナリツリーアルゴリズムを使用し、各ノードが主キーに対応する行のデータを格納するためです。挿入されたデータの主キーが自己増加していると仮定すると、バイナリツリーアルゴリズムは特定のノードにデータをすばやく追加し、他のノードを移動する必要はありません。ただし、不規則なデータが挿入されると、挿入ごとにバイナリツリーの以前のデータの状態が変更されます。これによりページが分割されます。 テスト: 2つのテーブルを作成する テーブルt8を作成します( id int 主キー、 c1 varchar(500)、 c2 varchar(500)、 c3 varchar(500)、 c4 varchar(500)、 c5 varchar(500)、 c6 varchar(500) ) エンジン innodb 文字セット utf8; テーブルt9を作成します( id int 主キー、 c1 varchar(500)、 c2 varchar(500)、 c3 varchar(500)、 c4 varchar(500)、 c5 varchar(500)、 c6 varchar(500) ) エンジン innodb 文字セット utf8; 10,000 個の不規則な主キー データと 10,000 個の通常の主キー データを挿入する PHP スクリプトを記述して、違いを確認します。 <?php 時間制限を設定する(0); ローカルホストに接続します。 mysql_query('テストを使用します;'); // 主キーを自己増分する $str = str_repeat('a', 500); 開始時刻をマイクロタイムに設定します。 ($i=1;$i<=10000;$i++) の場合{ mysql_query("t8 値に挿入($i、'$str'、'$str'、'$str'、'$str'、'$str'、'$str')"); } 終了時間 = マイクロタイム(true); echo $endTime-$startTime.'<br/>'; //順序付けられていない主キー $arr = range(1, 10000); シャッフル($arr); 開始時刻をマイクロタイムに設定します。 foreach($arr を $i として){ mysql_query("t9 値に挿入($i、'$str'、'$str'、'$str'、'$str'、'$str'、'$str')"); } 終了時間 = マイクロタイム(true); echo $endTime-$startTime.'<br/>'; テスト結果グラフ 10,000 ルールのデータ: 998 秒 = 16 分 結論は: クラスター化インデックスの主キー値は、ランダムな値ではなく、継続的に増加する値にする必要があります (ランダムな文字列または UUID を使用しないでください)。そうしないと、多数のページ分割とページ移動が発生します。 InnoDB を使用する場合、次のように定義するのが最適です。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL インデックス操作スキルの概要」、「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Tomcat 実行時の JVM エンコーディングの問題を修正
オペレーティングシステム: Alibaba Cloud ESC インスタンス centos7.4ソフ...
目次序文始めるReactライフサイクルリアクトファイバーリアクトセットステートReactイベントメカ...
Nginx をインストールして試してみましょう。画像はクラスであり、コンテナはオブジェクトであること...
設定ファイルを書いてMyBatisを簡単に使う方法マイバティス3.xここでは MyBatis につい...
目次序文: 1. コンセプト2. モジュール化の利点3. 複数のスクリプトタグを導入した後の問題1....
Linux の優れた点は、マルチユーザー、マルチタスク システムにあります。 Linux では通常、...
目次MySQL NDB Clusterとはクラスター構築のための準備作業クラスターのデプロイを開始す...
この記事では、ネイティブ JS を使用して実装された実用的な Web ナビゲーション バー効果を紹介...
01. VMware Workstation Pro 15 のダウンロードダウンロード: VMwa...
導入前回の記事では、Redis をインストールして設定しましたが、まだ終わりではありません。PHP ...
HTML における相対と絶対の違い: 正直に言うと、HTML は世界で最もシンプルな言語です。タグ言...
1. まず、公式ウェブサイト https://www.python.org/downloads/so...
効果 html <本文> <div class="content&quo...
目次1. 冷蔵庫に入りきらない象2. シャドウクローン文字列3. 実際に見た「奇妙なボール」 4. ...
準備のメリットPrepare SQL が生成される理由。まず、MySQL サーバー上で SQL を実...