DDIAの研究ノート--chapter3

DDIA_Charpter3の    研究ノート

インデックス:あなたがインデックス化されていない場合は、我々はデータベースからデータを照会する場合、データのクエリは、時間の複雑さはO(N)であるとき、我々はデータ量の増加など、すべてのデータを通過できるので、そう、何のクエリルールは、ありません大きな、高速なクエリのパフォーマンスが低下します。だから、クエリのパフォーマンスを向上させることができ、インデックスを作成するのではなく、原因ので、書き込み効率が低下する、インデックス構造のメンテナンスを書いている時点を同期させる必要があるため。

 

ハッシュインデックス:

ハードディスクに保存されているアドレスデータのためのキーと値のペア、キーインデックス値、値を保持します。ハッシュインデックス欠陥のみトラバーサルのためのデータの特定の範囲内で、問い合わせの範囲ではありません。

B-ツリー:

ディスクスペースのツリーポインティング部Bの各ノードは、典型的には4キロバイトのサイズ以上です。各Bツリーノードのデータが含まれている:インデックス値の高い順序集合、及びデータに対応し、対応するインデックスデータの値(ポインタを、木のB +非リーフノードは、データを含まないので、木が多いです低い)、他のノードを指すポインタのセット。

Bツリー索引を追加する場合、最初のターゲットノードのB-treeインデックスが配置され、検索インデックス順序付けインデックス値を加算し、ノードが直接追加十分なスペースがある場合、スペースが不足し、その後ノードが中にある場合2つのノード、および添加。

ボトムBツリー全体Bツリーノードを覆うように直接書き込み動作である:したがって、データベースは追加のデータ構造を提供する:先行書き込みログ(WAL、先行書き込みログ)(別名REDOログ(REDOログ)クラッシュログBに基づいて、一貫性のある状態ツリーにデータベースを復元することができる場合)、修正するBツリーのニーズが最初のログのニーズに書き込まれているときに動作し、する-データは、インデックスの複数を有することができるので、複数を維持することが必要です崩壊に対するBツリーデータベースの保守の半分以上、複数のインデックスの構造との間の不整合を引き起こすBツリー、。

しかし、これはまた、パフォーマンス・オーバーヘッドを引き起こす - 追加のデータ構造は、書き込み動作を書く必要性と同様に、Bツリーおよび更新のための直接書込み動作ツリーノードの底部B Bなどの資源の浪費にどのリード(実際に指標値を複数記憶ツリーノード)

 

クラスタ化インデックス(クラスタ化インデックス)(すべての行がデータを格納する)と、非クラスタ化インデックス(索引NONCLUSTERED) インデックスをクラスタ化インデックス値と格納に対応)

 

クラスタ化インデックス:InnoDBエンジン以上で存在は、InnoDBエンジンは、クラスタ化インデックスとして選択される最初の非ヌル一意のインデックスの主キーを指定せずに、クラスタ化インデックスとして、デフォルトの主キーによって選択された、そのようなインデックスが存在しない場合、生成ユニークなプライマリキークラスタ化インデックスとして隠されました。

クラスタ化インデックス:クラスタ化インデックスノードは、全データクラスタ化インデックスを記録一意に対応するデータを特定し、クラスタ化インデックスデータの両方を1対1の関係を有します。

非クラスタ化インデックス:非一意のインデックスがないクエリを直接できるデータベーステーブルのような対応するデータが同一のインデックス値に対応する異なる複数のデータを有していてもよく、および、したがって、インデックスを必要と一意に対応するデータを識別する。-このインデックスは、補助の指標として、クラスタ化インデックス、他のインデックスは、非クラスタ化インデックスと呼ばれるなったクラスタ化され、両方のクエリ索引と補助クラスタード・インデックスを介して全データに対応するインデックス・ノード・レコード(このプロセスはバックテーブルになることです)

インデックスを覆う:インデックスカバーインデックス型ではなく、なぜなら、非クラスタ化インデックスは、非クラスタ化インデックスの値によってクエリのみクエリ値が行うことができるが含まれている場合、それは非ポリなり、独自の対応するフィールドの値を運びますカバーにクラスタ化インデックス()インデックス。

-------------------------------------------------- ------------------------------------

インメモリ・データベースのパフォーマンス上の利点があるため、彼らは、ディスクから読み取る必要がないという事実ではないことを直感的。オペレーティングシステムのキャッシュは最近ベースのメモリにディスクブロックを使用しているためであっても、ディスク・ストレージ・エンジンは、ディスクから読み取る必要がないかもしれません。代わりに、メモリデータ構造がエンコードされたディスクのデータ構造のオーバーヘッドがなくなるため、彼らは速いです。[44]。

OLTPオンライン・トランザクション処理-データベースのようにブログの記事、アクションゲーム、アドレス帳の連絡先、および多くの異なる種類の中で使用されるようになった場合でも、基本的なアクセスモードは、ビジネストランザクションに似てまだです。アプリケーションは通常、キーによって少数のレコードを見つけるためにインデックスを使用します。ユーザーの入力に応じて、レコードを挿入または更新します。これらのアプリケーションは、対話型であるため、そのアクセスモードは、次のように呼ばれるオンライントランザクション処理(OLTP、オンライン・トランザクション処理)

オンライン分析処理OLAP -しかし、また、ますますデータの分析に使用し始めたデータベースは、データ分析は非常に異なるアクセスパターンを持っています。典型的には、クエリの多数の分析スキャンレコードを必要とする、各レコードは、単に元のデータがユーザに返送するのではなく、列を読み、(例えば、カウント、合計または平均として)の要約統計量を算出します。これらのクエリは、通常、ビジネスアナリストによって書かれた、およびヘルプの企業へのオファーは、より良い経営判断(BI)レポートを作成しています。データベースを使用して、このトランザクションモードを区別するために、それが呼ばれるオンライン分析処理(OLAP、オンラインAnalytice処理)

 

表面はデータ、集計が、異なる内部最適化を照会するSQLステートメントを使用することであるが、一般的に2つの異なるシナリオで使用されるデータベースは、さまざまな最適化を行います。

おすすめ

転載: www.cnblogs.com/ybonfire/p/12172841.html