在c#.net中打开与数据库的连接时,在我的情况下是oracle,是否涉及到很多开销?我猜不会因为连接池而存在。所以我说的是,每当我打开一个连接时,它实际上会从池中获取一个打开的连接,如果池中没有可用的连接,那么它将打开一个新连接吗?
谢谢!
答案 0 :(得分:4)
你是对的。有很多好文章解释了ADO连接池。例如,MSDN - SQL Server Connection Pooling (ADO.NET),其中包含:
连接池减少了数量 新连接必须是的时代 打开。合伙人保持所有权 物理连接。它管理 通过保持一组的连接来建立联系 每个给定的活动连接 连接配置。每当一个 用户调用在连接上打开, pooler寻找可用的 池中的连接。如果汇集了 连接可用,它返回它 调用者而不是打开新的 连接。当应用程序调用时 关闭连接,pooler 将其返回到合并的活动集 连接而不是关闭它。 一旦连接返回到 游泳池,它准备重新使用 下一次公开电话。
答案 1 :(得分:2)
第一次打开连接时会产生很多开销。如果您正在使用连接池并且使用完全相同的连接字符串,则下次打开连接时,它应该使用连接池中的连接并且要快得多。