無料の「Oracle Database XE」で高速バッチ処理:活用のポイント

兒玉敏幸(101)
2008-08-15 16:09:01
  • このエントリーをはてなブックマークに追加

1-6. 再開可能領域割当ての活用

 Oracleデータベースには、領域割当てが失敗した場合に処理を一時停止して、エラーが訂正されると一時停止していた処理を自動的に再開する機能があります。この機能を再開可能領域割当てと言います。また再開可能モードで実行されているSQL文を再開可能文(Resumable Statement)と呼びます。

 バッチ処理が中間テーブルが「CREATE TABLE AS SELECT」で作成しているコンポーネントの組み合わせで構成されているとしましょう。

 最終的なデータを用意するまでに様々なデータ加工などが必要である場合は当然、中間テーブルも増えていきます。これらの中間テーブルは最終的なデータを作成するまで存在している場合は、領域不足に陥ることも考えられます。特に大量データを扱う場合はさらに発生の可能性が高まりますし、長時間にわたる処理の途中であれば最初からやり直すには時間が掛かりすぎて問題となることも考えられます。このような問題のソリューションとして、再開可能文は最適です。

 領域割当ての失敗による一時停止が発生したことを検知する仕組みは必要となりますが、比較的簡単に実装できますので是非活用しましょう。

1-7. シーケンスの活用

 データを処理する際に自動採番が必要になった場合、みなさんはどのように実装しますか?

 採番テーブルを用意して排他制御しながら独自で実装することもできますが、データベースの機能であるシーケンスの活用を検討してください。

 Oracleのシーケンスは番号抜けのない連番が要求されるような処理では利用できないのですが、高速に採番することは可能です。一方、独自で排他制御しながら採番すると、バッチ処理の場合はスループットが上がらずパフォーマンスに大きな影響がありますので注意が必要です。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]