关于SQL性能的一点讨论

hoken2020856 2011-03-15 01:43:09
目前接手一段别人的code,用C#连接SQL Server。
里面数据库操作频繁而分布在不同的函数中,操作之间又有许多别的程序逻辑。目前他的做法是只有一个connection,一直open,等所有操作都完成再close。以目前的数据运算量来看,大概要一直open几个小时才能close。
我以前一直都是针对一个数据库操作open一个connection,操作完成立即close。我想问一下,这两种做法,如果数据库操作非常频繁的话,哪个性能更好?
...全文
116 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
haitao 2011-03-16
归还,就是把 连接对象 的 在用标志 设为假而已
使用前,就是找一个 在用标志 为假 的连接对象,把它的 在用标志 为真,再使用
回复
hoken2020856 2011-03-15
请问这个“归还”具体是什么操作?对于连接,我就知道打开和关闭。归还是个什么操作呢?
回复
haitao 2011-03-15
池,就是不close的了,归还只是让连接处于可给别人用的状态,这是为了避免close/open的慢

你是想解决服务器内存的占用高?
如果就2、3个客户端,close了也省不了多少内存
回复
hoken2020856 2011-03-15
不好意思,这里指的“归还连接”不就是close了吗?既然都close了,不就等于跟服务端断开了吗?剩下的意思我大概了解,就是说连接池的资源有限,如果长期占用会影响别的用户进行连接。可是我的数据库就两三个客户端,所以就不存在这个问题了。
[Quote=引用 9 楼 sz_haitao 的回复:]
引用 5 楼 hoken2020856 的回复:
但是归还后,SQL仍然不释放内存。那么频繁打开关闭连接有什么意义呢?


归还连接,客户端不 断开,服务端也就不 释放
但是,这样机制下,100个用户,可能只要10个连接 就够用了
[/Quote]
回复
haitao 2011-03-15
[Quote=引用 5 楼 hoken2020856 的回复:]
但是归还后,SQL仍然不释放内存。那么频繁打开关闭连接有什么意义呢?
[/Quote]

归还连接,客户端不 断开,服务端也就不 释放
但是,这样机制下,100个用户,可能只要10个连接 就够用了
回复
hoken2020856 2011-03-15
唉,说什么的都有。难道没有个准确的结论吗?
回复
orochi_gao 2011-03-15
针对C/S模式应用里面频繁open,close开销可能更大.
且Open后的一些绑定应用等业务上也不适合频繁开关.
回复
dawugui 2011-03-15
你这个编程有关,和SQL SERVER无关,应该去C#版问.
回复
hoken2020856 2011-03-15
但是归还后,SQL仍然不释放内存。那么频繁打开关闭连接有什么意义呢?
回复
haitao 2011-03-15
连接缓冲池,需要的抓一个连接来用,不需要,归还
回复
--小F-- 2011-03-15
数据库操作比较频繁的话,我觉得还是连接一下,再关闭一下比较好
这样可以很好的释放空间
回复
hoken2020856 2011-03-15
不顶就沉了,高手出现吧!
回复
ohfox 2011-03-15
没有考虑过这种问题..
不过貌似,听说,据传,联接也是一种昂贵的开销
如果非常频繁的建立,断掉,是不是会有影响啊.

等大牛来解答
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-03-15 01:43
社区公告
暂无公告