+ -
当前位置:首页 → 问答吧 → C# 连接数据库效率的问题

C# 连接数据库效率的问题

时间:2011-12-23

来源:互联网

在c#程序里,需要频繁地访问数据库,我就单独写了一个方法,每次都重新建立连接。
后来又想声明一个属性,保存连接。但是不知道一直与数据库保持连接会不会增加数据库的负担。
不知道这两种方式哪种更省资源?

作者: tiankong206   发布时间: 2011-12-23

一般来说都是重新建立连接的吧,很少有保持连接的

作者: zh6335901   发布时间: 2011-12-23

程序的数据连接并发要求怎样?如果并发数极少,保持连接也可以,但最好不要这样。对于SQL数据库,自动有连接池维护的,打开关闭一次花费的时间极少,几乎可以忽略。换成Access就要考虑了。

作者: dalmeeme   发布时间: 2011-12-23

引用 2 楼 dalmeeme 的回复:

程序的数据连接并发要求怎样?如果并发数极少,保持连接也可以,但最好不要这样。对于SQL数据库,自动有连接池维护的,打开关闭一次花费的时间极少,几乎可以忽略。换成Access就要考虑了。


程序里会涉及到SQL,Access等,其中Access比较多一些。
按你的说法,是不是Access比较适合用保持连接的方式?
还有用ODBC连接其他数据库,其中连SqlAnywhere非常慢,不知道有没有优化方法。

作者: tiankong206   发布时间: 2011-12-23

数据库连接用完要马上释放掉,连接资源是很宝贵的,不能占着连接什么都不做。用能DataSet(将查询结果存入本地数据集中操作)实现的功能最好不要用DataRead(直接对数据库操作)去实现,因为这样不会占用连接资源。
ACCESS数据库并发性十分差,我曾做过实验,两个用户同时连接一个ACCESS表就有其中一个用户会提示数据表正处于锁定状态。如果表正处于打开状态,再用程序连就连不上了。所以做程序最好不要用ACCESS数据库。

作者: mizuho_2006   发布时间: 2011-12-23

一般来说不需要保留连接,因为现在的底层数据库比如oledb,sqlclient都提供连接池,你建立的连接纳入连接池管理,关闭连接不真正关闭和数据库连接,而是放入池中,

所以保持连接和每次都重新连接效率几乎完全一样,保持连接会有很多麻烦问题,所以重新连接是最好的,连接池会帮你判断连接是否太老而放弃,

作者: stonespace   发布时间: 2011-12-23

sql的自动维护比你保持连接的速度更快。用完释放调就行了

作者: mabaolin   发布时间: 2011-12-23

access也不需要保持连接,access是本地数据库,重新连接很快,

引用 3 楼 tiankong206 的回复:
引用 2 楼 dalmeeme 的回复:

程序的数据连接并发要求怎样?如果并发数极少,保持连接也可以,但最好不要这样。对于SQL数据库,自动有连接池维护的,打开关闭一次花费的时间极少,几乎可以忽略。换成Access就要考虑了。


程序里会涉及到SQL,Access等,其中Access比较多一些。
按你的说法,是不是Access比较适合用保持连接的方式?
还有用ODBC连接其他数据……

作者: stonespace   发布时间: 2011-12-23

学习 ... 调用完释放

作者: XBIRDBUPT   发布时间: 2011-12-23

我做过一个测试:
SQL数据库:10000次Open、Close,花费约300毫秒;
Access:100次Open、Close,花费约5000毫秒。

楼主你自己根据连接的次数和并发情况,斟酌着办吧~~

作者: dalmeeme   发布时间: 2011-12-23

对于一般的应用来说, 在访问完数据库 马上就关闭连接的话 应该无需考虑数据库连接的问题,

如果你是搞个循环,在循环中访问数据库,那么你需要考虑将数据库连接 移到循环之外。

作者: Activer   发布时间: 2011-12-23

热门下载

更多