在线咨询
QQ咨询
服务热线
服务热线:13125520620
TOP

数据库的连接池问题-数据库

发布时间:2011-11-12 浏览:4966

  摘要:

    连接池是用来建立一些和db的连接,使用户访问db时可以直接使用这些现成的连接。

    无论何时,只要客户端应用程序积极的与中间层进行通讯,那么服务器就会创建一个与数据库连结,并查询数据库的业务对象每个业务对象都维护着自己的连接。中间层创建一个新的业务对象时,该业务对象会创建一个新的Connection对象在连结池中。

    启动一个新的连接时,会检查连结池中现有连接。如果有打开的连接,那么业务对象就使用它,否则创建一个新连接。

    当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。

  如何实现连接池

    确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。

    如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。每一个连接池都与一个不同的连接字符串相关,当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同, 就从连接池取出一个连接;如果不相同,就新建一个连接池。

    ADO.Net中不想存储连接在连接池中:

    ①在连接字符串中添加“OLE DB Services= -4;”
    ②如果使用的是SqlDbConnection, 则添加“Pooling = False;”

  优点

    如果不建立连接池,每个用户每一次访问db时都要和db建立一次连接, 这样db  server  容易产生连接过多的错误,用户也会觉得速度很慢。

  缺点

    数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。

  使用技巧

    1.当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。

    2.在关闭数据库连接前确保关闭了所有用户定义的事务。

  警告

    建议使用完 Connection 后始终将其关闭,以便连接可以返回到池中。不是显式关闭的连接可能不会添加或返回到池中。

TAG
软件定制,软件开发,瀚森HANSEN
0
该内容对我有帮助