我对oracle数据库中的这两个场景中的每一个都有一个关于性能的问题: -
背景: 我为企业使用oracle数据库开发asp.net业务应用程序
之一:
我创建一个数据库用户并在asp.net应用程序的连接字符串中使用此用户在执行某些业务逻辑时连接到db,因此如果20个最终用户同时使用此asp.net应用程序,那么所有这些都是以一个用户身份连接到数据库
2:
我创建了多个数据库用户(2到5个用户),并在连接字符串池中使用它们,因此如果20个最终用户同时使用asp.net应用程序,那么并非所有用户都连接到db
什么是更好的
答案 0 :(得分:0)
我不确定Oracle的细节......但一般来说,一个好的模型如下:
创建多个数据库用户,每个用户具有不同级别的数据库访问权限,具体取决于他们的角色。这些数据库用户不对应于实际用户,而是对应于角色,可能大约4:对创建/删除/更新表等的完全访问权限,对更新表的写访问权限,从表中选择的读访问权,执行存储过程和函数
对于ASP.NET应用程序所需的任何数据类型的修改,请将此操作封装在存储过程中。基本上,您在存储过程级别编写数据访问接口。
创建“stored_procedure_executor”db用户,其访问权限仅允许执行某些存储过程(和函数)。该用户无权直接从表中访问CREATE / DROP / UPDATE / SELECT。
在ASP.NET应用程序中,您只需要为“stored_procedure_executor”数据库帐户存储/提供连接字符串(db用户登录信息)。
在开发,维护和支持期间,您需要能够直接创建/ DROP / UPDATE / SELECT,为此您可以创建具有适当访问级别的其他db用户。但是您将从数据库管理工具使用这些数据库帐户,而不是通过ASP.nET。因此,登录信息永远不需要在ASP.NET级别公开。
这主要受安全问题的指导,但也可以提高性能,因为它会强制您考虑访问数据的方式/模式,从而允许您优化数据库的结构,以及作为最常用查询的实现(嵌入在存储过程中)。
答案 1 :(得分:0)
它很好,但我的情况是:我观察到20个最终用户同时运行应用程序时性能下降,所以这是因为我所有的数据库工作作为db的单个用户或者可以通过使用多个用户来增强???????????????????????