社区
Web Services
帖子详情
web service 连接池问题
fletcher
2004-08-28 03:48:10
在我的项目里有多个web service 都有数据库连接我想让他们共享同一个连接怎么实现?
...全文
622
11
打赏
收藏
web service 连接池问题
在我的项目里有多个web service 都有数据库连接我想让他们共享同一个连接怎么实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddggggdd
2004-09-01
打赏
举报
回复
连接池应该可以满足,只要连接串相同,都会放在同一池中,如果非要别的办法,考虑一下连接工厂.
jamzh
2004-08-31
打赏
举报
回复
帮你顶!
fletcher
2004-08-31
打赏
举报
回复
还有更好的办法吗
pgwron
2004-08-30
打赏
举报
回复
心情不好,没分也回
Tomgus
2004-08-29
打赏
举报
回复
连接池允许应用程序从连接池中获得一个连接并使用这个连接,而不需要为每一个连接请求重新建立一个连接。一旦一个新的连接被创建并且放置在连接池中,应用程序就可以重复使用这个连接而不必实施整个数据库连接创建过程。
当应用程序请求一个连接时,连接池为该应用程序分配一个连接而不是重新建立一个连接;当应用程序使用完连接后,该连接被归还给连接池而不是直接释放。
如何实现连接池
确保你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。如果连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。
优点
使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。
缺点
数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。
技巧和提示
1. 当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来处理它。
2. 在关闭数据库连接前确保关闭了所有用户定义的事务。
3. 不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。如果内存和其他资源是你必须首先考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。
连接池FAQ
1. 何时创建连接池?
当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。
2. 何时关闭连接池?
当连接池中的所有连接都已经关闭时关闭连接池。
3. 当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?
当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。
4. 我应该如何允许连接池?
对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。
5. 我应该如何禁止连接池?
ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:
1) 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;
2) 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;
zhpsam109
2004-08-29
打赏
举报
回复
http://www.microsoft.com/china/msdn/events/featureevents/2004/MSDevTrainingCourse.mspx#XSLTsection124121120120
zhpsam109
2004-08-29
打赏
举报
回复
顶!
The123
2004-08-29
打赏
举报
回复
最好还是不要共享同一个连接,否则就会同楼上所说的
如果硬要使用,那就必须要用一个独立的线程监视这个连接了,一旦该连接被一个对象调用了,那其他需要调用这个连接的对象就排队等候吧,直到这个对象结束对连接的调用,下一个对象再上吧。呵呵,不知描述的是否清楚。
serf
2004-08-28
打赏
举报
回复
不要用静态连接对象,这样不管你的池有多大,只要不关闭,总是使用其中一个连接而已,容易产生访问冲突。
serf
2004-08-28
打赏
举报
回复
.net数据库连接池还没有特别明确的规格,目前是oleConnection和sqlConnection实现不一样。ole的是靠驱动程序的管理器去配置,程序内不用控制。sqlConnection是根据连接字符串确定连接池的,只要连接串同,就是使用的一个连接池。连接串内增加"Min Pool Size=x;Max Pool Size=y",x,y是池容纳连接的最小最大数限定。池是基于应用域,而不是进程管理的。
1979xt
2004-08-28
打赏
举报
回复
设一个静态的连接对象就行,不过共享连接容易造成使用时的冲突问题,而且.net中的连接对象并不是长连接的,对资源的消耗也不是很大,共享有什么好外吗?
SpringMVC+Mysql实例详解
SpringMVC+Mysql实例详解,一直用的是ssh,因为公司要用到SpringMVC,以前也没接触过,所以今天来和大家一起学习一下这个框架,分享一下。
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境,详细查看博客
最新java ee api中文版帮助文档 chm格式
最新java ee api帮助文档 ,chm格式的。中文版和英文版两版本,网上好不容易找到的
十二、
连接池
线程池配置——HttpClient
连接池
3.x、4.x 和 5.x API 是完全不兼容的,使用起来比较麻烦。在 HttpClient 的执行过程中,连接复用是一个关键的性能优化点。通过合理配置
连接池
参数、正确处理连接的使用和释放,以及关注
连接池
的生命周期和性能监控,可以有效提高。下面是对
连接池
源码的重要步骤分析,包括连接的复用和非复用情况的处理,以及
连接池
内部的数据结构。此异常通常表示
连接池
中的连接用尽,导致无法获取到可用连接。这种状态表示线程在等待
连接池
中的连接。时,到每个主机的并发最多只有 200,但总的并发连接数为 300。
从零开始实现C++ Tiny
Web
Server(四)---- 拨开云雾见天日,一文讲透线程池与
连接池
Pool
好吧,我承认有点标题党的成分所在。可能是最近干啥都比较急功近利,写博客也有种完成任务的感觉所在。我觉得我的大脑只能够单进程执行,多进程并发一起做不是我的风格,玩就是玩,学就是学,我最讨厌一边学一边玩了。我们总能在网上看到一些人告诫后人,要学会平衡生活和工作,但是根本不存在平衡,我们只能在某一个阶段聚焦于某一件事情。
Web Services
12,166
社区成员
16,325
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章