何时从 Asp.net 关闭与 oracle 数据库的连接
When to close connection to an oracle db from Asp.net
我正在使用 asp.net 应用程序从 oracle 数据库中检索我的数据,并且 return 它们作为 json 在我的 android 应用程序中使用它们。
我想知道我是否必须在每次发出请求时打开、关闭与数据库的连接,或者是否最好打开一次连接并保持打开状态,因为我正在编写的应用程序将被打开像 24 小时/7 天。
我读过一些关于连接池的内容,但我有点困惑,
因为我不知道连接池是否会被使用,因为我使用移动应用程序询问我的asp.net应用程序。
预先感谢您的回复。
您有 3 个选项。
- 在每次请求时打开和关闭数据库。
- 在初始化时打开数据库,在
Page_UnLoad
或 OnError
时关闭它
- 永远打开数据库,在回收时关闭它。
我们从 (1) 开始,然后在可以的情况下使用 (2) 进行优化,并避免 (3)。
为什么我们避免使用 3d 选项,因为如果我们有很多池或线程,我们可能会在调用时发生冲突,并且还可能留下许多打开的连接,最终没有任何可用的其他连接可用。
我们默认需要 (1),因为我们总是需要一些额外的调用来从数据库中询问一些东西 -
我们优化了(2),因为在页面渲染时,我们通常需要多个数据库调用 - 一个共享打开的连接只为一个调用可以一点点提高速度。
我假设您的服务是无状态的。然后连接在每次请求后自动终止,并清除仍在内存中的所有内容(只要它不是静态的)。
但是,如果你用 usings 包装你对数据库所做的一切,那就更好了。这将自动关闭所有连接并清除所有内容。例如=>
using (System.Data.IDbConnection con = DBFactory.CreateDbConnection(Session))
{
using (System.Data.IDbCommand cmd = DBFactory.CreateDbCommand(con))
{
您甚至可以在有多个查询时执行此操作。如果你想连接它们,你必须通过交易来完成。即使您关闭连接,事务也会保持连接打开。
您不必担心速度,因为 .Net 运行 是后台的连接池,并不会真正关闭连接。
希望对您有所帮助!
我正在使用 asp.net 应用程序从 oracle 数据库中检索我的数据,并且 return 它们作为 json 在我的 android 应用程序中使用它们。
我想知道我是否必须在每次发出请求时打开、关闭与数据库的连接,或者是否最好打开一次连接并保持打开状态,因为我正在编写的应用程序将被打开像 24 小时/7 天。
我读过一些关于连接池的内容,但我有点困惑,
因为我不知道连接池是否会被使用,因为我使用移动应用程序询问我的asp.net应用程序。
预先感谢您的回复。
您有 3 个选项。
- 在每次请求时打开和关闭数据库。
- 在初始化时打开数据库,在
Page_UnLoad
或OnError
时关闭它
- 永远打开数据库,在回收时关闭它。
我们从 (1) 开始,然后在可以的情况下使用 (2) 进行优化,并避免 (3)。
为什么我们避免使用 3d 选项,因为如果我们有很多池或线程,我们可能会在调用时发生冲突,并且还可能留下许多打开的连接,最终没有任何可用的其他连接可用。
我们默认需要 (1),因为我们总是需要一些额外的调用来从数据库中询问一些东西 -
我们优化了(2),因为在页面渲染时,我们通常需要多个数据库调用 - 一个共享打开的连接只为一个调用可以一点点提高速度。
我假设您的服务是无状态的。然后连接在每次请求后自动终止,并清除仍在内存中的所有内容(只要它不是静态的)。 但是,如果你用 usings 包装你对数据库所做的一切,那就更好了。这将自动关闭所有连接并清除所有内容。例如=>
using (System.Data.IDbConnection con = DBFactory.CreateDbConnection(Session))
{
using (System.Data.IDbCommand cmd = DBFactory.CreateDbCommand(con))
{
您甚至可以在有多个查询时执行此操作。如果你想连接它们,你必须通过交易来完成。即使您关闭连接,事务也会保持连接打开。 您不必担心速度,因为 .Net 运行 是后台的连接池,并不会真正关闭连接。
希望对您有所帮助!