Oracle Database 11g Release 2に関する10の重要なこと – askTom Live -
Point1: Do It Yourself Parallelis 【並列処理】
オラクル・コーポレーション
サーバー・テクノロジー部門 シニア・テクニカル・アーキテクト兼エバンジェリスト
Thomas(Tom) Kyte (トム・カイト)
( 目次 )
1.Do It Yourself Parallelis 【並列処理】
最初のポイントは、「Do It Yourself Parallelism」です。
Oracle Database 11g R2では、標準で組み込まれたパッケージを使って、PL/SQLでも簡単に並列処理がおこなえるようになりました。
1つのSQL文が自動的に分割され、それぞれが互いに影響し合うことなく、独立して実行されるのです。
これは、私がよく言う「できるだけ少ないコードを書きましょう」「1つのSQL文でできるだけたくさんのことを実行しましょう」と矛盾するように聞こえます。しかし、数百万や数千万、数億ものレコードを一度に処理する巨大なバッチ処理の場合は、分割して処理するほうが効率的です。
たとえば、ディスクスペースやCPUの不足、セッションの切断などでSQL文の処理が中断された場合にも、処理済みの部分は保存されるため、途中から処理を続行することができます。
私は長い間、この並行処理を手作業でおこなってきました。「Ask Tom」で、「DIY parallel」(DIYは「Do It Yourself」を意味します)というキーワードで検索すれば、私がどのようにしていたかがわかります。
私の著書『Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions』(Apress、2005年)でも、バッチ処理をどのように並行処理するかについて、かなりのページを割いて説明しています。rowidまたはプライマリキーを使って、表をいくつかのレンジに分割するという方法です。比較的わかりやすい方法ですが、大変な労力がかかります。(参照: rowidの例(英語)) (参照: プライマリキーの例(英語))
Oracle Database 11g R2では、これが非常に簡単になりました。自分でたくさんのコードを書く必要がなくなったのです。シンプルなビルトイン・パッケージDBMS_PARALLEL_EXECUTEが、上記の手順をすべて自動化してくれるからです。
大きな表を、rowidの範囲やプライマリキーの値などのユーザーが指定した方法で分割し、スケジューラを使って、エラーロギングや再試行などを伴うバックグラウンド処理がおこなわれます。
現在、さきほど挙げた著書を書き直しているところですが、かつて手作業でおこなっていたことを自動化できるので、多くのコードを省略でき、改訂版の並行処理の章は短くなりそうです。
▲ ページTOPに戻る
Oracle Database 11g Release 2に関する10の重要なこと – askTom Live - 目次
|
Copyright © 2010, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず
|
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。
Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。 |
Thomas(Tom) Kyte (トム・カイト)
2000年にAsk Tomブログ( http://asktom.oracle.com ) を開設して以来10年にわたり、全世界のオラクル技術者のありとあらゆる質問に答え、データベース技術の活用を世に広めてきた世界的に有名なエバンジェリスト。
|