现在的位置: 首页 > 综合 > 正文

パラレル(並列)処理の活用 – 夜間バッチ処理が業務開始時刻まで終わらない

2013年09月06日 ⁄ 综合 ⁄ 共 1692字 ⁄ 字号 评论关闭

夜間バッチは、次の日の業務開始時間までに処理が終わっていなりません。いわゆる"突き抜け"は絶対に避けなければなりません。
しかし、怖いのは、バッチ処理の対象のデータ量が増加し、処理時間は延び、時間内に終わらなくなってしまうことです。
そこで、対処方法の内のいくつかを考えてみたいと思います。

パラレル(並列)での処理を検討する

Parallel-1.JPG

最近のハードウェアの進化には目覚ましものがあります。CPUは高速化、そしてマルチコア化が進んでいます。安価なサーバーでも複数コアのCPUを複数個搭載してきています。

そこで、一つのコストのかかる処理に対して、高性能化したCPUをより効率的に使用する方法として、パラレル処理が有効です。

データベース処理のパラレル化

Parallel-2.jpg

パラレル処理は、単一のSQLをOracle Database内部で分割処理します。
その際に複数のプロセスを使用します。
そして、並列処理するプロセス数を設定するのかということが、ポイントです。
パラレル処理の必要のないトランザクションやシステム全体に影響がでないように、それぞれの処理に対して、並列数を設定することが必要になります。
しかし、この作業はデータベース管理者に経験と手間と時間を必要とします。
つまり大量に発行されるSQLの中から高コストのSQLを探し、パラレル度を調整し実行という作業を繰り返す可能性があるからです。従来(~11gR1)までは、この作業はDBAによる人手の作業でした。

Oracle Database 11g Release 2 で実装された、自動パラレル度設定により、Oracle Database自身が最適なパラレル度をそれぞれのSQL文に設定します。
この機能により、パラレル度設定に関するデータベース管理者、アプリケーション開発者の方々の負担を軽減することが可能です。
つまり、パラレル実行をより低コストで実現することが可能になりました。

I/Oがネックになるケースも

バッチ処理の処理時間に関しては、ディスクI/Oもボトルネックになりがちです。
特にバッチ処理では、大量のデータを扱うため、処理に必要なディスクI/O量が多くなり、パフォーマンスに悪影響が生じます。
その解決策として、ディスク本数を増やすことを考えますが、複数ディスクを効率的に利用するためのデータ配置をする必要があります。

このI/Oの分散配置にも、多大なコストが必要となりますが、Oracle Databaseにはこれを自動で行える機能が搭載されています。
それがAutomatic Storage Management(ASM)です。

おススメの入門記事: Oracle ASM を1から学ぶ

関連カテゴリ: ストレージ仮想化: Oracle Automatic Storage Management(ASM)

大量データには、パーティショニングが有効

Parallel-Partition.JPG

さらに、データを論理的に分割管理できるパーティションとの組み合わせで効果が発揮されます。パーティションとはテーブル(インデックス)を任意の分類によって異なる領域で格納することができる仕組みです。

関連カテゴリ パーティション

詳しくは


関連資料

抱歉!评论已关闭.