0

KornShell (ksh) コプロセスで一連のスクリプトを並行して実行しようとしています。これらのスクリプトの一部には、多くの DDL ステートメントが含まれています。これらの DDL ステートメントは独立していると識別され、さまざまな (そして大規模/高価な、たとえば 3,500 万行以上) データベース オブジェクトに対して機能します。それらを並行して実行するために、各 DDL ステートメントで個別のサブスクリプトを作成することを検討しています。これにより、次のように言えます。これはバッチ プロセスであるため、所要時間はそれほど重要ではありませんが (この単一ディスク並列実行環境では依然としてスラッシングが発生する可能性があります)。

私はまだ物理的なスクリプトの増殖という考えが好きではありません..かなり大きなスクリプトファイルから各DDL / DMLまたはその他のステートメントを抽出し、それらをプログラムで実行できるように、kshからパーサーを呼び出す方法があるかどうか疑問に思いますバックグラウンドプロセスで..何か考えはありますか?

4

1 に答える 1

0

これはうまくいきますか:

cat DDL_statements | parallel -j20 --pipe -N 10 sql oracle://scott:tiger@server

これは、DDL_statements の長さが 1 行であることを前提としています (1 行でない場合は、いくつかの例を挙げてください)。20 個のジョブを並行して実行し、10 個のステートメントのブロックで開始します。

GNU Parallel (および GNU sql - GNU Parallel の一部) を使用します。

于 2012-11-15T12:15:42.440 に答える