連載
» 2007年01月25日 00時00分 公開

パーティショニングとパラレル処理は最高の相性Oracleパーティショニング実践講座(3)(3/4 ページ)

[大久保正雄,アシスト]

パラレル化が可能な処理

 ここからは各パラレル処理の特徴と考慮点などを紹介していきます。大規模なデータ操作に有効といってもさまざまなケースがありますが(データの検索、挿入、更新、削除やオブジェクトの作成など)、以下の5つのケースでパラレル処理を活用することができます。

  • パラレルクエリ
    表のスキャン、結合・集合・各種ソート操作など
  • パラレルDDL
    副問い合わせを含む表の作成、索引の作成など
  • パラレルDML
    副問い合わせを含む行の追加、更新・削除処理など
  • パラレルロード
    従来型ロードの分割、1オブジェクトへの同時ロードなど
  • パラレルData Pump Export/Import
    表のロード、アンロードなど

パラレルクエリ

 パラレルクエリには、1つの操作内(イントラオペレーション)の並列化と、複数の操作(インターオペレーション)にまたがる並列化の2種類があります。単純に表を走査するだけならイントラオペレーションの並列化しか行われません(図8)。

図8 イントラオペレーション並列化の流れ 図8 イントラオペレーション並列化の流れ

 しかし走査した結果をマージ/ジョインしたり、さらにソートしたりする場合には、図9のようにそれぞれの操作が並列化され(イントラオペレーションの並列化)、さらに操作間の処理も並列化(インターオペレーションの並列化)されます。また、インターオペレーションの並列化では、同時に2つまでの操作(図9の例では全表走査とORDER BY操作)を実行できるため、指定した並列度の2倍のパラレル実行サーバが使用されることになります。インターオペレーションが発生すると、ソート・エリアやハッシュ・エリアのリソースが消費されるので注意が必要です。

図9 インターオペレーション並列化の流れ 図9 インターオペレーション並列化の流れ

パラレルDDL

 パラレルDDLでは副問い合わせを含む表の作成、索引の作成などがパラレル化されますが、パーティション環境と非パーティション環境で実行できる処理が多少異なります。

 パーティション環境では、パーティション表および索引のメンテナンス(alter、move、splitなど)と索引パーティションの再構成・分割が可能です。非パーティション環境では、副問い合わせを含む表の作成、および索引の作成・再作成のみ可能です。例えば副問い合わせを含む表を作成する場合、既存の表からデータを読み込む処理と、新規の表にデータを投入する処理がパラレル化されます。

記憶領域の注意点

 パラレルDDLでは並列度以外に領域管理にも注意する必要があります。表や索引をパラレルに作成する場合、図10のように各パラレル実行サーバがそれぞれ表や索引を構成するエクステントを確保します。そのため、並列度に対応したエクステントを確保できる空き領域が必要となります。

図10 パラレルDDLと記憶領域 図10 パラレルDDLと記憶領域

 また、図11のように各パラレル実行サーバが確保したエクステントに空き領域が発生する可能性もあります。

図11 パラレルDDLと断片化 図11 パラレルDDLと断片化

 このように、パラレルDDLではDDL処理の高速化を期待できる代わりに、領域は余裕を持って構成する必要があります。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。