データベースのストレージ管理
Oracle Databaseを構成するファイルにはデータファイルや制御ファイル、オンラインREDOログ・ファイルがありますが、ほかにもサーバー・パラメータ・ファイルやアーカイブREDOログ・ファイルも重要です。
一般的に、データベースのサイズは運用時間が経過するにつれ増加する傾向にあります。表や索引を格納する表領域の容量が不足したら、データファイルのサイズの拡張を行ったり、スモール・ファイル表領域の場合はデータファイルの追加を行ったりすることで容量を拡張します。
Oracle Databaseのオブジェクトを格納する領域は表領域という階層で抽象化されていますが、表領域を拡張する場合の物理デバイスの挙動を考えてみましょう。表領域を拡張するために、RAID1などで冗長化されたストレージを増設したとします。すると、この増設したストレージに新しい表ブロックや索引ブロックが格納されていきます。しかし、一般的なデータ・アクセス頻度の傾向として、新しく追加された最近のデータほどアクセス頻度が高くなる傾向があります(図1)。すると、新しく増設したストレージ・デバイスのアクセス頻度は高くなりますが、既存のストレージ・デバイスのアクセス頻度はそれほど高くないという現象が起こりえます。また、ストレージ上に配置されているオブジェクトが占める容量とアクセス頻度が比例しているとは限りません。さらに、業務要件の複雑化やアプリケーション改修の短期化に伴い、オブジェクト単位の配置の個別最適化を達成するのは難しくなっています。
ストレージ・デバイスを追加することでストレージ・サブシステム全体のI/O処理能力は上がっているはずなのですが、アクセスは新しく追加したストレージ・デバイスに集中するため、データベース・システムの性能としてはこの追加されたストレージ・デバイスの処理能力に依存してしまうという現象が起こりえます。特定のストレージ・デバイスにアクセスが集中すると、そこを「ホットスポット」と言います。
ホットスポットを解消するためには、ストレージを増設した際にデータ配置のリバランスを行い、すべてのストレージ・デバイスに均等にアクセスされるようにすることが望ましいです。