0

我对 oracle 数据库上这两个场景中的每一个的性能都有疑问:-

背景:我为企业使用oracle数据库开发asp.net业务应用程序

一:

我在做一些业务逻辑时,创建了一个数据库用户,并在asp.net应用程序的连接字符串中使用这个用户连接到db,所以如果20个最终用户同时使用这个asp.net应用程序,那么他们都连接到db作为一个用户

二:

我创建了多个数据库用户(2 - 5 个用户),并在连接字符串池中使用它们,因此如果 20 个最终用户同时使用 asp.net 应用程序,那么并非所有用户都以一个用户身份连接到 db

什么是更好的

4

2 回答 2

0

我不确定 Oracle 的细节......但一般来说,一个好的模型如下:

  1. 创建多个数据库用户,每个用户具有不同级别的数据库访问权限,具体取决于他们的角色。这些 db 用户不对应于实际用户,而是对应于角色,可能大约 4 个:对创建/删除/更新表等的完全访问权限,对更新表的写访问权限,从表中选择的读访问权限,执行存储过程和函数.

  2. 对于 ASP.NET 应用程序所需的任何类型的数据修改,请将此操作封装在存储过程中。本质上,您在存储过程级别编写数据访问接口。

  3. 创建一个“stored_procedure_executor”数据库用户,其访问权限仅允许执行某些存储过程(和函数)。此用户无权直接从表中访问 CREATE/DROP/UPDATE/SELECT。

  4. 在您的 ASP.NET 应用程序中,您只需为“stored_procedure_executor”数据库帐户存储/提供连接字符串(数据库用户登录信息)。

  5. 在开发、维护和支持期间,您将需要直接创建/删除/更新/选择的能力,为此,您可以创建具有适当访问级别的其他数据库用户。但是您将从数据库管理工具中使用这些数据库帐户,而不是通过 ASP.nET。因此,登录信息永远不需要在 ASP.NET 级别公开。

这主要是出于安全考虑,但也可以提高性能,因为它迫使您考虑访问数据的方式/模式,从而允许您优化数据库的结构以及实现最常用的查询(嵌入在存储过程中)。

于 2013-02-07T05:51:55.740 回答
0

这很好,但我的情况是:我观察到当 20 个最终用户同时运行应用程序时性能会下降,所以这是因为我所有的 db 工作都是作为 db 的单个用户进行的,或者可以通过使用多个用户来增强??? ?????????????????????

于 2013-02-11T12:31:33.257 回答