3つの主要なSQL ServerアルゴリズムのI/Oコストの簡単な分析

3つの主要なSQL ServerアルゴリズムのI/Oコストの簡単な分析

1. ネストループ結合

アルゴリズム:

考え方は非常に単純かつ直接的です。関係 R の各タプル r を、JOIN 条件のフィールドで関係 S の各タプル s と直接比較し、条件を満たすタプルをフィルター処理します。疑似コードで記述すると:

料金:

結合されたテーブルが内部層または外部層に配置される順序は、ディスク I/O コストに非常に重要な影響を及ぼします。 CPUオーバーヘッドは比較的小さく、主にタプルがメモリに読み込まれた後のオーバーヘッド(インメモリ)はO(n * m)です。

I/Oコストについては、ページ単位の前提によれば、I/Oコスト = M + M * N、

これを翻訳すると、I/O オーバーヘッド = M ページの読み取りの I/O オーバーヘッド + N ページを M 回読み取る I/O オーバーヘッドとなります。

2. ソートマージ結合

ネストされたループは、両方のセットが大きい場合には一般的に非効率的ですが、この場合にはソートマージの方がはるかに効率的です。特に、2 つのセットの JOIN フィールドにクラスター化インデックスが存在する場合、ソートマージは最高のパフォーマンスを実現します。

アルゴリズム:

基本的な考え方も非常にシンプルです (データ構造のマージソートを確認してください)。主な手順は 2 つあります。

a. JOINフィールドで並べ替える

b. 2 つのソートされたセットをマージしてソートし、各ソースからデータ列を取得して比較します (JOIN フィールドに重複する値があるかどうかに基づいて特別な「パーティション分割」が必要です)

コスト: (主に I/O オーバーヘッド)

ソートマージのコストに影響する要因は 2 つあります。JOIN フィールドがソートされているかどうかと、JOIN フィールドに重複する値がいくつあるかです。

◆最良の場合(両方の列がソートされ、少なくとも 1 つの列に重複する値がない場合):O(n + m)各セットのスキャンは 1 回のみ必要です。 (mとnの両方がインデックスを使用できると良いでしょう)

◆最悪の場合(両方の列がソートされておらず、両方の列のすべての値が同じ):O(n * log n + m * log m + n * m)2回のソートとすべてのタプル間の1回の直積

3. ハッシュ結合

ハッシュ結合は、2 つの列に重複した値がある場合のソートマージ (パーティション分割) の処理の考え方と本質的に似ています。ただし、違いもあります。ハッシュ結合はハッシュによってパーティションを結合し(各バケットがパーティション)、ソートマージはソートによってパーティションを結合します(各重複値がパーティションです)。

ハッシュ結合と上記の 2 つのアルゴリズムの最大の違いは、ハッシュ結合が等価結合にのみ適用できるという大きな制限でもあることに留意する価値があります。これは主に、ハッシュ関数とそのバケットの決定論と無秩序によるものです。

アルゴリズム:

基本的なハッシュ結合アルゴリズムは、次の 2 つのステップで構成されます。

ネストされたループと同じですが、ビルド入力が実行プランの上部にあり、プローブ入力が下部にある点が異なります。

ハッシュ結合操作は、ビルド フェーズとプローブ フェーズの 2 つのフェーズで完了します。

a.入力フェーズの構築: JOIN フィールドに基づいて、ハッシュ関数 h2 を使用して、小さいセット S のメモリ内ハッシュ テーブルを構築します。同じキー値は、リンク リストを使用してバケットに結合されます。

b.プローブ入力フェーズ: 結合を完了するために、より大きな R セットのハッシュ テーブルをチェックします。

料金:

注目すべきは、大きなセット R 内の各タプル r について、ハッシュ バケット内の r に対応するバケット内の各タプルを r と比較する必要があることです。これは、アルゴリズムの中で最も時間のかかる部分でもあります。

CPU コストは O (m + n * b) です。ここで、b はバケットあたりのタプルの平均数です。

要約:

3 つの結合方法にはすべて 2 つの入力があり、最適化の基本原則は次のとおりです。

1. 大きなデータのハッシュ結合を避ける (ハッシュ結合は同時実行性が低い状況に適していますが、大量のメモリと IO を占有します)。

2. 効率的なマージ結合とネストされたループ結合に変換してみます。考えられる方法としては、テーブル構造設計、インデックス調整設計、SQL 最適化、ビジネス設計最適化などがあります。

<<:  完全なルーティングアルゴリズムの設計目標の分析

>>:  プログラマー試験ノート4: ソートアルゴリズム

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

指紋と顔は本当に生体認証を表現できるのでしょうか?

今年初めから現在まで、ToFセンサーはApple、Samsung、GD、AMSなどのセンサー企業やス...

...

映画はヒットできるでしょうか?機械学習を使用して正確な予測を行う

映画データベース (TMDB) は映画データ用の API を提供し、ユーザーはこのデータベースからデ...

...

スタンフォード HAI が主催: 世界中で 18 の主要な AI イベント

3月18日、李飛飛氏が所長を務める人間中心人工知能研究所(HAI)は、発足からそれほど経たないうちに...

人工知能はインターネットなしでも動作できるようになる

エッジコンピューティングの進歩とますます高性能化するチップにより、人工知能(AI)は広域ネットワーク...

米国NHTSAの新規制:レベル2以上の自動運転に関わる事故は報告が必要

米国道路交通安全局(NHTSA)は、SAEレベル2の先進運転支援システム(ADAS)またはSAEレベ...

...

人工知能はマーケティング業界に破壊的な影響を及ぼすだろう

ビッグデータと人工知能の市場は現在、活況を呈しています。調査会社の最近の予測によると、これら2つの技...

モノのインターネットはスマートな衛生設備を創り出し、都市環境の衛生を細かく管理します

旅行のピーク時に都市環境衛生がより大きな圧力に耐えられるか?清掃車両と清掃作業員をより適切に管理する...

人工知能産業の急速な発展により、2021年以降、人工知能セキュリティの市場スペースは巨大になるでしょう。

[[439966]]人工知能は、人間の意識と思考の情報処理をシミュレートできるコンピュータ サイエ...

機械学習と従来のプログラミングの違いについて話す

[[264779]] AI と ML は誇張されすぎていて、if 文を書いたりプログラミングに関係す...

Go 言語アルゴリズムの美しさ - 基本的なソート

[[404642]]この記事はWeChatの公開アカウント「roseduanの執筆場所」から転載した...

...

テクノロジートレンド: 2024 年に流行するものは何でしょうか?

人々は、たとえすべてを正しく行えなかったとしても、毎年年末には必ず将来を楽しみにするものです。今年は...