単一 SQL クエリに対する Oracle の並列処理の制限について
Oracle 11g Release 2 では高度な並列化機能が導入されていますが、特定のクエリに対して最適な並列処理を実現するには、慎重な検討と分析が必要です。 /* PARALLEL */ などのさまざまな並列処理のヒントを適用しているにもかかわらず、クエリは単一の CPU に限定されているようです。
並列処理への全体的なアプローチ
Oracle の並列処理を理解することは、次のような点で重要です。システムパラメータ、クエリ特性、実行時条件の複雑な相互作用。まずは基本的な質問から始めます:
- リクエストされた並列サーバーは何台ですか?
- 割り当てられた並列サーバーは何台ですか?
- 効果的に使用された並列サーバーは何台ですか?
ボトルネックの特定
包括的な SQL 監視ツールを利用します。アクティブなレポートを使用して、実行計画のステップが遅い根本原因を明らかにします。このツールは、各ステップに費やされた時間と達成された並列処理の程度を明らかにします。
並列サーバーの割り当てに影響する要因
並列サーバーの割り当てには、多数の要因が影響します。主な考慮事項は次のとおりです。
-
オペレーション間の並列処理: オペレーションの並べ替えまたはグループ化により、並列サーバーの割り当てが 2 倍になる可能性があります。
-
クエリ ヒント: 明示的なステートメントレベルのヒントが推奨されますが、オブジェクトレベルのヒントも影響を与える可能性があります並列処理。
-
再帰 SQL: キャッシュされていないシーケンスの処理などの再帰 SQL は、操作を効率的にシリアル化できます。
-
セッション設定の変更: セッション コマンドの変更並列処理を強制または有効にすることができます。
-
テーブルとインデックス程度: 小さいテーブルとインデックスでは並列処理のメリットが得られない可能性があります。
-
オプティマイザの考慮事項: オプティマイザは、並列処理の方が効率的であると判断した場合、並列処理ではなくシリアル処理を選択することがあります。
-
プラン管理: SQL プラン ベースラインなどの機能により、背後での並列度が変更される可能性があります。
-
エディションの制限: 並列操作は Enterprise Edition と Personal Edition でのみサポートされます。
その他の考慮事項
影響を与える可能性のあるその他の要素並列処理には次のものが含まれます:
-
オペレーティング システムとハードウェアの制限: CPU コア、メモリ、および I/O 機能は並列処理に影響します。
-
並列 DML の制限: 特定のシナリオトリガーや自己参照制約などにより、並列 DML が妨げられる可能性があります
-
バグと制限事項: 時折起こる解析の問題や Oracle のバグにより、予期しない並列処理動作が発生する可能性があります。
最適な並列処理のための最適化
最適な並列処理を実現するには、実験を行い、特定のワークロード特性を理解する必要があります。次のヒントを考慮してください:
-
不必要なヒントを避ける: オプティマイザの意思決定を妨げる可能性があるため、ヒントは必要な場合にのみ使用してください。
-
並列 DML を有効にする: 必要に応じて、並列 DML が有効になっていることを確認します。
-
システム パラメータを変更します: PARALLEL_DEGREE_LIMIT や PARALLEL_MIN_SERVERS などのシステム パラメータを調整して、並列処理を微調整します。
-
パーティショニングを検討します: パーティショニングにより向上する可能性がありますデータを複数に分散して並列処理する
-
並列処理の使用状況を分析します。 SQL_ID の SQL_MONITOR レポートを監視して、ボトルネックと改善の余地がある領域を特定します。
以上がOracle SQL クエリが並列処理を使用しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。