OracleとディスクI/O
1. Oracleとディスクの関係
OracleはDBMS(データベース管理システム)であり、Oracleにおけるデータベースとは、Oracle管理下でディスクに入っているデータのことを言います。つまりOracleが取り扱うデータはディスクから読み込み、処理をしてからディスクへ書き戻します。このことからOracleにおいてディスクI/Oスピードがいかに大切かということが理解できると思います。
2. ディスクの動作
ディスクの動作はご存知の方も多いと思いますが、重要なところなので一応説明しておきます。
ハードディスク内部のイメージ図を以下に示します。
ハードディスクの動作は、レコードをイメージしてもらえばよいと思います。違いと言えば音楽でなくデータを読み込み・書き込むことと、アクチュエータと呼ばれるレコードアームも動いて読み書きを行うところです。実際のディスクからデータを読み出す際の動作を以下で説明します。
@データある場所がディスクの内側か外側か判断し、アクチュエータがヘッドを移動させる
Aディスクが回転しデータが存在する場所がヘッドの下に移動しデータを読み出す
@のヘッドを移動させる時間は一般的に、「頭出し時間」「シーク時間」と呼ばれるものです。Aのディスクの回転させる時間は、「回転待ち時間」と呼ばれます。シーク時間と回転待ち時間を合計すると数〜数十msec(ミリ秒)の時間がかかります。短いと考える方もいらっしゃるかもしれませんが、メモリへのアクセスがnsec(ナノ秒)単位で行えることを考えるとディスクへアクセスしデータを読み出すのが以下に時間がかかる処理かということが分かると思います。つまりディスクへのI/O処理は出来る限り減らす必要があるのです。
3. ディスクへのアクセス方法
前項で解説したように、DBMSにとってディスクI/Oは必要であるものだが出来る限り減らす必要があるのです。ここでは、効率的なディスクをアクセスを行うためにも理解しておく必要があるシーケンシャルアクセスとランダムアクセスについて解説します。
■シーケンシャルアクセス
シーケンシャルアクセスとは逐次アクセスのことで先頭から順を追ってアクセスすることを言います。表の全データを読み込む際に、メモリにデータがないとシーケンシャルアクセスが発生します。シーケンシャルアクセスだと表を読み込むだけで時間を費やしてしまいます。
■ランダムアクセス
インデックスを使用し、必要な箇所だけを読み込みます。ランダムアクセスはヘッドを動かしながら飛び飛びにアクセスするためディスクから見ると非効率です。しかしインデックスにより指定された部分しか読み込む必要がないため効率的なアクセスが可能になります。
※データの入っている位置はROWIDといわれ、OracleはこのROWIDが分かればディスクに対してランダムアクセスが可能になります。
<オラクルデータベース概要(豆知識)>
|
スポンサードリンク
|