アプリケーションが多すぎるセッションを使用するのはいつですか?


9

私は、OCIを使用してOracleと通信するクライアント/サーバーアプリケーションに取り組んでいます。以前は、アプリケーションでセッションを無限のリソースとして扱うことが多かったため、そのOracleサーバーを共有している他のアプリケーションに悪影響を与える可能性がありました。

私のアプリケーションが他の人とうまくやり取りし、そのようなリソースを独占しないことが重要であることを他の開発者に説得しようとしています。

Oracle DBAは、どの時点で、アプリケーションがセッションを過度に使用(または乱用)していると考えますか?

編集:現在、セッションの最大のコンシューマの1つは、ダイレクトパスロードを使用して複数(20〜30)のテーブルを並列に一括ロードするこの1つのコンポーネントです。

回答:


10

すべてのものと同様に、状況によって異なります。

OCIを使用している場合は、クライアント/サーバーアプリケーションを開発していると思います。私は通常、そのような状況のデータベースで共有サーバー接続をサポート、アプリケーションがデータベースに接続したときに共有サーバー接続を要求します。これにより、新しいセッションを作成するためにデータベースが実行する必要がある作業量が制限されるため、アプリケーションのパフォーマンスが向上します。これには、サーバーで使用可能なリソースを他のユーザーが使用できるようにするという副作用があります。共有サーバー接続を使用すると、クエリが共有サーバープロセスに送信される必要があるため、データベースが後続のクエリを実行するときに長いコードパスが必要になりますが、共有サーバープロセスの数が妥当であれば、これは大した問題ではありません。

DBAが自動PGA管理を使用していない場合、複数のセッションを開くことも問題になる可能性があります。手動PGA管理を使用している場合、PGAはセッションごとに構成されているため、各セッションはSORT_AREA_SIZE他のPGAコンポーネント間でソート用に個別に割り当てることができます。手動のPGA管理を使用してデータベースに多数のセッションを作成し、各セッションがそのPGA使用率を最大化しようとした場合、サーバーのRAMが不足し、全員にパフォーマンスの問題が発生する可能性があります。ただし、Oracle 10.1以降を使用している場合は、自動PGA管理を使用できます。その場合、DBAはaを構成しPGA_AGGREGATE_TARGET(またはMEMORY_TARGET11gにPGAを含める)、データベースがすべてのセッションにわたる集約PGAが確実に制限されるようにして、データベースのリソースが不足するようにします。

データベースが共有サーバー接続をサポートし、アプリケーションが共有サーバー接続を取得し、データベースが自動PGA管理を使用する場合、ほとんどのDBAは、作成するセッションの数をあまり気にしません。

多数のセッションを作成して、より多くの作業を並行して実行できるようにすると、セッション数を超えるとパフォーマンスの問題が発生します。たとえば、1000セッションをサポートするようにデータベースを構成するのは簡単です。たとえば、すべての1000セッションが同時にデータウェアハウスに対して重要なクエリを発行する場合、データベースが山積みにならないように構成することははるかに困難です。アプリケーションがデータベースのクエリに使用できるすべてのリソースを使い果たしている場合、DBAはおそらくOracle Resource Managerの使用を検討するでしょう。異なるアプリケーションや異なるユーザーに優先順位を付ける。たとえば、DBAはリソースマネージャーを構成して、CPU使用率が100%になった場合に、アプリケーション全体でCPUの50%を取得し、アプリケーション全体で25%を取得し、残りの25%で残りの25%を取得するようにできます。 。保留中の他のリクエストがない場合、アプリケーションはCPUを100%使用することができます。

物事を並行して実行している場合、独自の並列化コードを作成するよりもオーバーヘッドが少ないため、ステートメントを並行して実行するOracleの機能を調査することも役立ちます。たとえば、複数のセッションを開いてアプリケーションの個別のスレッドから各ステートメントを実行するのではなく、Oracleパラレルクエリを使用してステートメントをシリアルに送信するクライアントアプリケーションを作成する方がはるかに簡単で、かなり高速になると期待しますOracleは、並列クエリを使用してステートメントを実行していませんでした。並列クエリを使用する場合、データベースは、生成される並列スレーブの数を調整することもできるため、データベースが特にビジーな場合は、開始される並列スレーブが少なくなり、データベースが比較的アイドルの場合は、より多くの並列スレーブが開始されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.