欢迎光临
我们一直在努力

关于数据库连接的一点浅见

建站超值云服务器,限时71元/月

最近经常见到有人问如何连接数据库效率最高,耗费资源最低,在这里我谈一下我的看法。连接数据库不外乎三种方

法,一种是将数据库连接放到session变量中,一种是放到application变量中,再一种就是在页面中使用时打开,用完立

刻关闭。尽管前两种方法用起来比较方便,但应该说第三种方法是最好的,下面我分别讲一下,由于水平所限,错误难

免,请大家指正。

session:用session的缺点显而易见,服务器会为每一个用户创建一个数据连接,直到这个用户离开或session超时,

这样就会大大浪费服务器资源,如果访问量大的话,系统资源就会被耗尽,或者数据库连结数到达上界,就会造成程序出

错。

application:既然用session会出现这么多问题,那是不是用application最节省资源呢?只建立一条连接就够了,大

家共用。不是这样的,如果无论多少用户只建立一条连接,同样会带来很多问题,首先是如果访问量大,一条连接肯定无

法满足需要,同样会造成程序出错;其次,如果你用了私人临时表或光标,那麻烦就来了。私人临时表和光标只对当前连

接可见,可是如果大家都用一条连接,那么就会产生冲突,造成程序错误。

最后一种方法(即开即用即关):这是最好的一种方法,原因如下:打开数据库连接,使用完立即关闭,是一种良好的

编程习惯,其实不仅是数据库连接对象如此,所有对象也就是说server.creatobject出来的对象理论上生存期都不能超过

0.01秒(国外有人做过测试的,不是我信口开河),如果超过就会对效率产生影响。那么也许你会说每个页面都会打开一个

连接,那打开的连接数不是更多,效率不是更低吗?错了,讲到这里就不能不提一下连接池(也叫共享池的概念),现在

的大型数据库包括odbc本身都提供连接池的功能,他的基本原理是这样的,一个连接申请关闭时系统并不是真的关闭它,

而是将它放到共享池中,如果这时有相同的连接请求,系统就会把这个连接从共享池中取出来给用户,这样就省去了关闭

和打开连接的系统开销,只有当这个连接长时间不被请求时并且共性池中的连接饱和,系统才会真的干掉它。明白这个道

理,你就明白尽管你在程序中请求打开和关闭连接,但系统并不一定要增加这些开销的。

道理讲完了,现在给例子。下面是打开和关闭数据库连接的两个函数,你可以把它存为一个include文件,使用时包含

进来就行了。例子连接的数据库是sql server 7.0,我没用odbc,因为用oledb效率高的多。

<script language = vbscript runat = server>

———————————————————————————

file name : connectdb.inc

description: 数据库连接

function list : opendbconnection(a_strdataname , a_strservername) :打开数据库连接

parameter: a_strdatename , 数据库服务器名

a_strservername :数据库server名

closedbconnection(a_objdbconn) :关闭数据库连接

parameter: a_objdbconn ,连接对象

date: 2000/05/03

author: liuyunpeng

history: 2000/05/03 version 1.0

2000/06/03 modified function opendbconnections parameters

by liuyunpeng

——————————————————————————–

function opendbconnection(a_strdataname , a_strservername)

dim m_dbconn , m_strconn

set m_dbconn = server.createobject("adodb.connection")

m_strconn = "provider=sqloledb ; user id = sa ; password= ; initial catalog = "&a_strdataname&" ;

data source = "&a_strservername

m_dbconn.open m_strconn

call checkerror()

return this database connection

set opendbconnection = m_dbconn

end function

sub closedbconnection(a_objdbconn)

a_objdbconn.close

set a_objdbconn = nothing

end sub

</script>

简单说一下使用方法,假设你的数据库server是"server1" , 数据库是"mydatabase" , 则使用如下

<%

dim m_objconn

打开数据库连接

set m_objconn = opendbconnection("mydatabase" , "server1")

….

关闭数据库连接

closedbconnection m_objconn

%>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 关于数据库连接的一点浅见
分享到: 更多 (0)