大規模データ処理を効率化するパーティション化されたグローバル索引の保守機能

データウェアハウス環境で求められる大規模な表および索引の管理性、可用性、および問合せ性能をOracle Partitioning(パーティション化) は、大幅に向上させます。Oracle PartitioningはEnterprise Editionのオプションで、Oracle8で初めて導入されました。 その後のすべてのリリースで、Oracle Partitioning(パーティション化)は大幅に拡張されています。

Oracleは、ローカル索引とグローバル索引という2つのタイプのパーティション索引をサポートします。 ローカル索引とは、実表が同一レベルでパーティション化された索引で、すべての表パーティションには必ず1つの対応する索引パーティションがあります。 実表をローカル索引で修正すると、インデックスの保守は非常に簡単です。表パーティションが削除されると、それに対応する索引パーティションも削除されます。 表パーティションが追加されると、それに対応する索引パーティションも追加されます。

ローカル索引とは異なり、グローバル索引は実表とは無関係にパーティション化することができます。 そのため、グローバル索引パーティションと表パーティションとの対応は1対1でない場合もあります。グローバル索引を使用すると、 パーティションの削除や追加によって索引のすべてのパーティションが影響を受けることもあるため、索引の保守はより複雑になります。 Oracle8iでは、パーティション表のすべてのグローバル索引は、パーティション保守処理の後に「UNUSABLE」とマークされます。 そのため、これらのグローバル索引を再構築しなければならず、保守は高負荷の伴う処理になることがあります。

Oracleのパーティション化機能は、Oracle9iでグローバル索引の保守をパーティション保守処理中に行う機能が追加されたことにより、 拡張されています。新しい句UPDATE GLOBAL INDEXESをオプションで保守コマンドに追加することができます。 この句が指定されると、Oracleはすべてのグローバル索引をUNUSABLEとマークするのではなく、これらの索引を自動的かつ効率的に保守します。 たとえば、パーティションを削除する場合、この新機能を利用するコマンドは次のようになります。
ALTER TABLE T1 DROP PARTITION P1 UPDATE GLOBAL INDEXES;

次の演算はこの新しい句に対応します。

DROP PARTITION
ADD PARTITION
ADD SUBPARTITION
EXCHANGE PARTITION
EXCHANGE SUBPARTITION
MOVE PARTITION
MOVE SUBPARTITION
SPLIT PARTITION
MERGE PARTITION

この機能には主に2つの利点があります。
  1. パフォーマンス - グローバル索引の再構築には表全体のスキャンが必要であり、負荷のかかる処理になることがあります。 この句を使用すると、グローバル索引の保守にかかる時間を大幅に短縮することができます。

  2. 可用性 - 索引がUNUSABLEとマークされると、アプリケーションは索引によってパフォーマンスを保証されているため、 そのアプリケーションが使用不可能になることがあります。UPDATE GLOBAL INDEXES句を使用すると、グローバル索引は常に 使用可能になります。そのため、表にアクセスするアプリケーションは影響されません。
Oracle Partitioningにより、Oracleはあらゆる要件に対処するパーティション化機能の完全なセットを提供することを目標としています。 この拡張された索引保守は、Oracleがすべての新しいリリースにおいてそのパーティション化機能をより堅牢にしているという一例に過ぎません。
 

追加情報
 Oracle9i Database マニュアル(ドキュメント) - Oracle9i Database - Oracle9iデータベース管理者ガイド - 第17章 パーティション表と索引の管理
 Oracle9i Database 技術資料 - Business Intelligence (データ・ウェアハウス) - DSS環境におけるOracle9i のパフォーマンスと拡張性

Oracle9i Database Daily Feature
 アーカイブ