-2
私は以下の記事を読んで、データ永続性のためのさまざまなデータ構造を理解しようとしました。この記事では、シーケンシャル操作はBツリーには適していますが、ランダム操作には適していないと書かれています。なぜBツリーのランダムな操作がうまくいかないのですか?
あなたは、いくつかの例で、この上でいくつかの光を入れてくださいます。前もって感謝します 。
私は以下の記事を読んで、データ永続性のためのさまざまなデータ構造を理解しようとしました。この記事では、シーケンシャル操作はBツリーには適していますが、ランダム操作には適していないと書かれています。なぜBツリーのランダムな操作がうまくいかないのですか?
あなたは、いくつかの例で、この上でいくつかの光を入れてくださいます。前もって感謝します 。
シーケンシャルキー(又は単調増加関数)は、一般的であるべきであるBツリー
に問題が発生しない、キー値の連続(又は単調)であるアクセスの配列は、一般的にありませんBツリーの問題を引き起こします。
理由は次のとおりです。シーケンシャルアクセスの間、キー値は同じBツリーノードにとどまる傾向があります。ランダムアクセスはBツリーノードを変更する可能性があります。 Bツリーノードはセカンダリストレージページを表します。前者は二次ストレージページをあまり頻繁に変更せず、後者を頻繁に変更することを意味します。前者は一般的に高速であり、後者は一般的に遅い。
非常に次の段落で答えます。 「ランダムな操作では、ハードウェアの制限によりランダムに「修正」操作が複数のディスクIOを引き起こすため、Bツリーはパフォーマンス上問題になります。 –
はい、ランダムな操作では、リーフでディスクに複数のシークが行われ、必要なキーが存在し、最悪の場合には、 "ログnからベースk"のページレベルシークが可能です。私は新しいキーを挿入したいと思うかもしれませんし、Bツリーの挿入に従って、ボトムアップのアプローチとキーの位置がルートにあるかもしれないので、再び私はページ全体を横切って "log n toベースk "シーク。だから私のポイントは、ハードウェアの制限がコストをかけてランダムに変更する方法です。 –
あなたはちょうどあなた自身に答えました。質問。 –