【问题标题】:one oracle database user or multiple users used in asp.netasp.net 中使用的一个 oracle 数据库用户或多个用户
【发布时间】:2013-01-22 10:48:44
【问题描述】:

我对这两种情况在 oracle 数据库上的性能有疑问:-

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

一个:

我做一个数据库用户,在做一些业务逻辑的时候在asp.net应用的连接字符串中使用这个用户来连接db,所以如果有二十个最终用户同时使用这个asp.net应用,那么他们都是以一个用户身份连接到数据库

两个:

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

什么更好

【问题讨论】:

  • 如果您有来自同一用户的 20 个会话,或者有 20 个不同的用户每个会话有一个会话,这没有区别。这听起来太小了,本身就不是一个问题,但也许所有 20 个人都在同时做密集的工作。您是否已经在使用连接池?

标签: oracle multiple-users


【解决方案1】:

我不确定 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 级别公开。

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

【讨论】:

  • 这很好,但我的情况是:我观察到当 20 个最终用户同时运行应用程序时性能下降,所以这是因为我作为 db 的单个用户完成我所有的数据库工作,或者可以通过使用多个用户来增强
【解决方案2】:

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

【讨论】:

  • 这应该是对原始问题的评论或编辑。
  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 2011-09-08
  • 2011-05-19
  • 2020-09-02
  • 2012-04-03
  • 2023-03-09
相关资源
最近更新 更多