1. 索引1.1 コンセプト
簡単に言えば、データベース内のインデックスとテーブルとデータの関係は、本棚にある本 (テーブル)、本の内容 (データ)、本のカタログ (インデックス) の関係に似ています。 1.2 機能データベース システムでインデックスを作成する主な機能は次のとおりです。
1.3 索引作成の原則1.3.1 ディスクアクセス回数を減らすことがインデックス構築の核となる考え方インデックスの目的はクエリを容易にすることです。 1.3.2 B+ツリーは基礎となるインデックスの実装に適しているデータへのアクセス回数を減らすことは、インデックスを実装する際に重要な考え方です。次に、いくつかのデータ構造を分析して、インデックスを実装するためのより適切なデータ構造を見つけます。 二分探索木: 二分探索木は単一枝木である可能性があるため、時間計算量はO(N)である。 AVLツリー:
赤黒木:
ハッシュテーブル:
今のところ、MySQL インデックスの実装には AVL ツリーまたは赤黒ツリーのどちらか一方がより適しているようです。この 2 つのデータ構造の検索効率はツリーの高さによって直接決まります。したがって、データが増えるとツリーの高さも増えます。 さらに最適化するには、N 項検索ツリーを使用してツリーの高さを減らし、ディスク IO を減らして検索効率を向上させることができます。 Bツリー: BツリーはN分探索木の一種である。 Bツリーの例の構造: インデックスで使用される各ノードはレコードを表す Bツリーの特徴:
B+ツリー: B+ ツリーは、B ツリーの改良版である特殊な N 項検索ツリーです。 B+ツリーの例の構造: B ツリーに対する B+ ツリーの改良点:
B+ツリーの利点:
1.4 適用可能なシナリオ
1.5 使用上の注意補充: 1.5.1 インデックスを表示文法: テーブル名からインデックスを表示します。 例: 1.5.2 インデックスの作成文法: テーブル名 (フィールド名) にインデックス インデックス名を作成します。 例: 1.5.3 インデックスの削除文法: テーブル名のインデックス インデックス名を削除します。 例:
2. 取引2.1 コンセプト物事: コンピューターでは非常に広い概念であり、一般的には実行すべきことや実行したことを指します。リレーショナル データベースでは、トランザクションは SQL ステートメント、SQL ステートメントのグループ、またはプログラム全体になります。 簡単に言えば、たとえば銀行振込操作で、A が B に 500 元を送金すると、この操作には実際には 2 つの操作が含まれます。A の口座残高は 500 元減少し、B の口座残高は 500 元増加します。 物事は、この一連のアクションを 1 つにまとめたもの、つまり何もしないかすべてを行うかのいずれかに相当します。 2.2 トランザクションを使用する理由上記の銀行振込の例を使用して、口座 A から 500 元を減額する操作は成功したが、口座 B から 500 元を増額する操作は成功しなかった場合、振込操作は失敗となります。 物事の核となる特性は、一連の操作をまとめて全体を形成することです。操作はすべて完了するか、まったく完了しないかのどちらかです。 何もしないということは、操作が失敗した場合、その時点の中間状態が秘密裏に復元されることを意味します。 したがって、物を使用することで、一連の操作が部分的にしか完了せず、完全に完了するか、まったく完了しないことを保証できます。 2.3 4つの主要な属性トランザクションは、リカバリと同時実行制御の基本単位です。トランザクションには、原子性、一貫性、永続性、分離性の 4 つの特性があります。 物事の核心は原子性である 2.3.1 原子性
物事の核心は原子性であり、原子性の核心は中間状態へのロールバックであり、中間状態へのロールバックの核心はロールバックであり、ロールバックの核心は操作の各ステップを記憶することです。 2.3.2 一貫性コンセプト: トランザクションは、データベースをある一貫した状態から別の一貫した状態に変更する必要があります。一貫性と原子性は密接に関連しています。 トランザクションの実行前と実行後、現在のテーブル内のデータは適切な状態にあります 2.3.3 永続性コンセプト: 永続性とは、 トランザクション操作のデータはハードディスク上で直接操作され、ハードディスク上のデータは永続的です。 2.3.4 分離コンセプト: トランザクションの実行は他のトランザクションによって妨害されることはありません。つまり、トランザクション内で使用される操作とデータは他の同時トランザクションから分離されており、同時に実行されるトランザクションは互いに干渉できません。 2.4 使用法開いたもの: トランザクションを開始します。 複数のSQL文を実行する ロールバックまたはコミット -- ロールバック: 上記のすべての SQL ステートメントがロールバックに失敗したことを示します。 -- 送信: 上記のすべての SQL ステートメントが正常にコミットされたことを示します。 これで、MySQL データベースのインデックスとトランザクションに関するこの記事は終了です。MySQL のインデックスとトランザクションに関するより詳しい情報については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CentOS7 で ethereum/Ethereum を最初からインストールする
>>: HTMLがHikvisionカメラのリアルタイム監視機能を実現
目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...
この記事は主に、docker デプロイメント springboot プロジェクトのサンプル分析を紹介...
先ほど MySQL パスワードを設定したのに、外食したり荷物を受け取ったりするときにパスワードを忘れ...
目次使用されるAPI簡単な例人.ts親コンポーネントサブコンポーネント効果要約する使用されるAPI ...
1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...
目次1. MySQLをダウンロードする1.1 ダウンロード1.2 インストール1. MySQLをダウ...
この記事では、jQueryタグセレクターアプリケーションの具体的なコードを例として紹介します。具体的...
まず、フォントアイコンとは何でしょうか?表面的にはアイコンですが、実際はテキストです。テキストの設定...
序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...
目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...
目次1. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...
SPA を構築する場合、多くの場合、特定のルートを保護する必要があります。たとえば、認証されたユーザ...
1998 年の CSS2 勧告の時点で、テーブルは徐々に舞台から消え、歴史の中に記録されるようになり...
protobufの簡単な紹介Protobuf は、Google のオープンソースのシリアル化プロトコ...
目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...