0

Oracleデータベースでのこれら2つのシナリオのそれぞれのパフォーマンスについて質問があります:-

背景:エンタープライズ用のasp.netビジネスアプリケーションを開発しているOracleデータベース

1:

私は1人のデータベースユーザーを作成し、asp.netアプリケーションの接続文字列でこのユーザーを使用してビジネスロジックを実行するときにdbに接続します。したがって、20人のエンドユーザーがこのasp.netアプリケーションを同時に使用すると、すべてのユーザーがdbに接続します。 1人のユーザーとして

2:

複数のデータベースユーザー(2〜5ユーザー)を作成し、それらを接続文字列のプールで使用するため、20人のエンドユーザーがasp.netアプリケーションを同時に使用する場合、すべてが1人のユーザーとしてdbに接続するわけではありません

何が良いか

4

2 に答える 2

0

Oracleの詳細についてはよくわかりませんが、一般的に、適切なモデルは次のとおりです。

  1. 複数のデータベースユーザーを作成します。各ユーザーは、役割に応じて、データベースアクセスのレベルが異なります。これらのdbユーザーは実際のユーザーに対応していません。代わりに、ロールに対応しています。おそらく約4:テーブルの作成/削除/更新などへのフルアクセス、テーブルの更新への書き込みアクセス、テーブルから選択するための読み取りアクセス、ストアドプロシージャと関数の実行。

  2. ASP.NETアプリが必要とするデータへのあらゆる種類の変更については、この操作をストアドプロシージャにカプセル化します。基本的に、ストアドプロシージャレベルでデータアクセスインターフェイスを記述します。

  3. 「stored_procedure_executor」dbユーザーを作成します。このユーザーのアクセスでは、特定のストアドプロシージャ(および関数)の実行のみが許可されます。このユーザーは、テーブルから直接CREATE / DROP / UPDATE/SELECTにアクセスすることはできません。

  4. ASP.NETアプリケーションでは、「stored_procedure_executor」dbアカウントの接続文字列(dbユーザーログイン情報)を保存/提供するだけで済みます。

  5. 開発、保守、サポート中に、CREATE / DROP / UPDATE / SELECTを直接実行する機能が必要になります。このために、適切なレベルのアクセス権を持つ追加のデータベースユーザーを作成できます。ただし、これらのdbアカウントは、ASP.nET経由ではなく、db管理ツールから使用します。したがって、ログイン情報をASP.NETレベルで公開する必要はありません。

これは主にセキュリティ上の懸念によって導かれますが、データにアクセスする方法/パターンについて考える必要があるため、パフォーマンスを向上させることもできます。これにより、データベースの構造と実装の両方を最適化できます。最も頻繁に使用されるクエリ(ストアドプロシージャに埋め込まれている)。

于 2013-02-07T05:51:55.740 に答える
0

それは良いですが、私の状況は次のとおりです。20人のエンドユーザーが同時にアプリケーションを実行するとパフォーマンスの低下が見られます。これは、すべてのdbをdbのシングルユーザーとして実行するか、複数のユーザーを使用して拡張できるためです。 ????????????????????

于 2013-02-11T12:31:33.257 に答える