2017-06-23 2 views
-2

私は以下の記事を読んで、データ永続性のためのさまざまなデータ構造を理解しようとしました。この記事では、シーケンシャル操作はBツリーには適していますが、ランダム操作には適していないと書かれています。なぜBツリーのランダムな操作がうまくいかないのですか?

Article link

enter image description here

あなたは、いくつかの例で、この上でいくつかの光を入れてくださいます。前もって感謝します 。

+0

非常に次の段落で答えます。 「ランダムな操作では、ハードウェアの制限によりランダムに「修正」操作が複数のディスクIOを引き起こすため、Bツリーはパフォーマンス上問題になります。 –

+0

はい、ランダムな操作では、リーフでディスクに複数のシークが行われ、必要なキーが存在し、最悪の場合には、 "ログnからベースk"のページレベルシークが可能です。私は新しいキーを挿入したいと思うかもしれませんし、Bツリーの挿入に従って、ボトムアップのアプローチとキーの位置がルートにあるかもしれないので、再び私はページ全体を横切って "log n toベースk "シーク。だから私のポイントは、ハードウェアの制限がコストをかけてランダムに変更する方法です。 –

+0

あなたはちょうどあなた自身に答えました。質問。 –

答えて

0

シーケンシャルキー(又は単調増加関数)は、一般的であるべきであるBツリー

に問題が発生しない、キー値の連続(又は単調)であるアクセスの配列は、一般的にありませんBツリーの問題を引き起こします。

理由は次のとおりです。シーケンシャルアクセスの間、キー値は同じBツリーノードにとどまる傾向があります。ランダムアクセスはBツリーノードを変更する可能性があります。 Bツリーノードはセカンダリストレージページを表します。前者は二次ストレージページをあまり頻繁に変更せず、後者を頻繁に変更することを意味します。前者は一般的に高速であり、後者は一般的に遅い。

関連する問題