社区
C#
帖子详情
■■多个进程间怎么共享数据库连接池?■■
zsgbox
2011-07-28 03:53:25
问一下,多个进程间怎么共享数据库连接池?我现在做了一个CS程序,访问Oracle,用户以瘦终端方式以不同用户远程同一台服务器,启动的是同一个程序,现在每启动一个实例,就会创建一个连接对象,有没有办法在进程间实现共用连接池的方法?而不是一个进程最少创建一个?
...全文
820
8
打赏
收藏
■■多个进程间怎么共享数据库连接池?■■
问一下,多个进程间怎么共享数据库连接池?我现在做了一个CS程序,访问Oracle,用户以瘦终端方式以不同用户远程同一台服务器,启动的是同一个程序,现在每启动一个实例,就会创建一个连接对象,有没有办法在进程间实现共用连接池的方法?而不是一个进程最少创建一个?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
卧_槽
2011-07-28
打赏
举报
回复
[Quote=引用 3 楼 zsgbox 的回复:]
先说明一下我访问的是Oracle,并且是CS程序,如果一个进程内部,当然可以自动启用连接池,一个程序我只占了一个连接,查询数据库也的确如此,当如果我启动两个进程,那数据库那边连接就变成了二个,如果我同时打开三个进程,则连接一定是三个,连接池是跟进程与作用域相关联的,不知道有没有办法让多个进程共享同一连接池。
[/Quote]
你干嘛要一直占着这个茅坑呢?拉屎的时候再去找茅坑么,平时没事的时候,不要占着就行了。
每次数据操作不会超过1s钟吧,用完了连接就释放掉。每种数据库的连接池都有上限,根据版本不同而不同。而连接池的提供是数据库提供的,和你的c#代码一点关系都没有,你只是调用他。
sqlserver个人版的连接数是5个,也就是同时最多有5个connection。超过就会报错。
用这样的版本,我可以做汇丰高尔夫的门禁系统。一共有12个门,每个门有3台电脑。
卧_槽
2011-07-28
打赏
举报
回复
用完了就放回去,就这么简单。
viki117
2011-07-28
打赏
举报
回复
webservice还不就是干这类的事
viki117
2011-07-28
打赏
举报
回复
可以吗?不同进程间发出的数据库连接可以公用吗?或者你加个中间层来访问吧..
鸭梨山大帝
2011-07-28
打赏
举报
回复
你这就是拿锅铲躲雨-总会有地方照顾不到.
如果你是CS,不论你DB是Oracle还是SQL Server,客户端是瘦客户端.
那么访问数据,获取资料,再返回资料这部分就应该抽取由WebService或者WCF来完成
你在每个CS客户端"以不同用户远程同一台服务器,启动的是同一个程序,现在每启动一个实例"
你觉得不同用户进程之间的通讯容易一下还是直接统一"访问数据,获取资料"容易一些?
[Quote=引用 3 楼 zsgbox 的回复:]
先说明一下我访问的是Oracle,并且是CS程序,如果一个进程内部,当然可以自动启用连接池,一个程序我只占了一个连接,查询数据库也的确如此,当如果我启动两个进程,那数据库那边连接就变成了二个,如果我同时打开三个进程,则连接一定是三个,连接池是跟进程与作用域相关联的,不知道有没有办法让多个进程共享同一连接池。
[/Quote]
zsgbox
2011-07-28
打赏
举报
回复
先说明一下我访问的是Oracle,并且是CS程序,如果一个进程内部,当然可以自动启用连接池,一个程序我只占了一个连接,查询数据库也的确如此,当如果我启动两个进程,那数据库那边连接就变成了二个,如果我同时打开三个进程,则连接一定是三个,连接池是跟进程与作用域相关联的,不知道有没有办法让多个进程共享同一连接池。
鸭梨山大帝
2011-07-28
打赏
举报
回复
数据库连接池不是.NET去控制的,由數據庫本身控制的.
你可以在WebConfig /App.Config中設定 ConnectionString時加上 MultipleActiveResultSets = True
这样设定来启动多活动结果集来优化连接.
不过这个设定仅适合SQL Server 2005(含)以上版本.
[Quote=引用楼主 zsgbox 的回复:]
问一下,多个进程间怎么共享数据库连接池?我现在做了一个CS程序,访问Oracle,用户以瘦终端方式以不同用户远程同一台服务器,启动的是同一个程序,现在每启动一个实例,就会创建一个连接对象,有没有办法在进程间实现共用连接池的方法?而不是一个进程最少创建一个?
[/Quote]
sdl2005lyx
2011-07-28
打赏
举报
回复
ADO.NET不用设置就可以自动执行创建连接池的任务。
当连接打开时,SqlConnection对象的ConnectString属性将根据一种精确的匹配算法来创建连接池,该算法会使连接池与连接中的字符串相关联。每个连接池都与一个不同的连接字符串相关联。当新连接打开时,如果连接字符串不精确匹配现有池,则将创建一个新池。
连接池一旦创建,直到活动进程终止时才会被毁坏。维护不活动的池或空池占用的系统资源非常少。
连接池是为每个唯一的连接字符串创建的。当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。连接将根据需要添加到池中,直至达到最大池大小。
在请求 SqlConnection对象时,如果存在可用的连接,则将从池中获取该对象。要成为可用连接,该连接当前必须未被使用,具有匹配的事务上下文或者不与任何事务上下文相关联,并且具有与服务器的有效链接。
如果已达到最大池大小且不存在可用的连接,则该请求将会排队。当连接被释放回池中时,连接池管理程序通过重新分配连接来满足这些请求。连接在关闭或断开时释放回池中。
数据库连接池
到底应该设多大?这篇文章告诉你
我在研究 HikariCP(一个
数据库连接池
)时无意
间
在 HikariCP 的 Github wiki 上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。故在此做译文分享。
数据库连接池
设置多大才合适?
来自:www.jianshu.com/p/a8f653fc0c54本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个
数据库连接池
)时无意
间
在HikariC...
主流Java
数据库连接池
比较及前瞻
点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时
间
送达!主流
数据库连接池
常用的主流开源
数据库连接池
有C3P0、DBCP、Tomcat Jdbc Pool、...
Python
数据库连接池
python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费...python的
数据库连接池
包:DBUtils DBUtils提供两种外部接口: PersistentDB:提供线程专...
数据库连接池
和线程池到底应该设多大?这篇文章可能会颠覆你的认知
本文内容95%译自这篇文章:... 我在研究HikariCP(一个
数据库连接池
)时无意
间
在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽...
C#
110,546
社区成员
642,581
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章