幽暗城。
我们预先创建好一部分连接,放在一个池中(集合),并且将这些连接标记为空闲状态。如果要使用连接就从池中获取一个连接使用,用完之后再次还回池中。连接池自己应该有自动初始化功能,自动增长功能,自动缩减功能。所谓自动增长就是当池中的连接都被使用之后,自动创建新的连接放入池中。所谓自动缩减就是当池中的空闲连接过多时,自动关闭部分连接。
德鲁伊是阿里巴巴开发的号称为监控而生的数据库连接池,是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
最近有些客户提出想对SQL Server的连接数进行一些监听。总结了以下一些方法:
1、获取SQL Server允许同时用户连接的最大数
SELECT @@MAX_CONNECTIONS
2、获取当前指定数据库的连接信息
SELECT FROM masterdbosysprocesses WHERE dbid IN
(
SELECT dbid FROM masterdbosysdatabases
WHERE NAME='YourDataBaseName'
)
--根据需要更改YourDataBaseName
SELECT FROM masterdbosysprocesses WHERE DB_NAME(dbid) = 'YourDataBaseName'
3、获取当前SQL服务器所有的连接详细信息
SELECT FROM sysprocesses
以上查询结果包含了:系统进程和用户进程。
如果只是想查用户进程的话则需采用下面的方法
4、获取自上次启动 SQL Server服务 以来连接或试图连接的次数
SELECT @@CONNECTIONS
这个刚开始会有点误解,认为是当前SQL Server服务器当前所有的连接数。需要重点注意。
>
在定义一个>
11 管理类构造方法中定义连接池初始化方法。方法中使用 Pooling>
12 管理类中定义返回>
实例化>
具体的示例代码如下
>
public class >
获得设置连接池>
public class >
>
Closeable>
//do other task
}
从网上找的,希望对你有所启发
Asp实现的数据库连接池功能函数分享
投稿:junjie
这篇文章主要介绍了Asp实现的数据库连接池功能函数分享,本函数能够加快网页的访问速度,降低数据库的压力,需要的朋友可以参考下
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库 *** 作的性能。
但是这项技术一般在java ,php ,net 里面运用到,asp很少用到,因为一些企业网站根本就不需要这样的技术。
也不是不能使用,下面就是研究出来的asp版本,能够加快网页的访问速度,降低数据库的压力。
1数据库连接文件 DbPoolasp
< %
Const PoolSize = 10
Const Connstr = "Driver={SQL Server};Server=(local);UID=sa;word=555;Database=db"
Function GetRandString(lenth)
Dim rndstr,i
Randomize
rndstr = ""
i = 1
do while i <= lenth
rndstr = rndstr & Chr(cint(((120 - 98 + 1) Rnd )+ 97))
i = i + 1
loop
GetRandString = rndstr
End Function
Function CreateDbConn()
Dim DbConn,ConnKey
Set DbConn = ServerCreateObject("ADODBConnection")
DbConnOpen Connstr
ConnKey = GetRandString(10)
DbPoolAdd ConnKey,DbConn
End Function
Function GetDbConn()
Dim CurKey,Keys
If DbPoolCount > 0 Then
Keys = DbPoolKeys ' 获取键名。
CurKey = Keys(0)
ResponseWrite "Cur DbConn Key Is : " & CurKey & "<br />"
Set Conn = ServerCreateObject("ADODBConnection")
Set Conn = DbPool(CurKey)
If ConnState = adStateClosed Then '如果这个连接已经关闭,将其从池里注销,再新建一个可用的连接并添加到池里
DbPoolRemove CurKey
Call CreateDbConn() '新建一个连接并添加到池里
Set GetDbConn = GetDbConn()
Else '否则的话,将其从池里注销,然后将复制的对象返回
DbPoolRemove CurKey
Set GetDbConn = Conn
Exit Function
End If
Else
ResponseWrite "连接池已用完,请重新初始化应用程序"
ResponseEnd
End if
End Function
Function FreeDbConn(DbConn)
DbPoolAdd GetRandString(10),DbConn
End Function
2全局文件 globalasa
<object ID="DbPool" Progid="ScriptingDictionary" Scope="Application" runat="server"></object>
<!--#include file="DbPoolasp"-->
< %
Sub Application_OnStart
Dim ConnKey
For i = 1 To PoolSize '建立指定数目的数据库连接
CreateDbConn()
Next
End Sub
Sub Application_OnEnd
DbPoolRemoveAll
End Sub
%>
3测试文件 testasp
<!--#include file="DbPoolasp"-->
< %
ResponseWrite "Test Start:<br>"
ResponseWrite "Current Objects count : " & DbPoolCount & "<br />"
Set dbconn = ServerCreateObject("ADODBConnection")
Set dbconn = GetDbConn()
ResponseWrite "get one connection from pool <br />"
ResponseWrite "Current Objects count : " & DbPoolCount & "<br />"
Set Rs = ServerCreateObject("ADODBRecordset")
Rsopen "select from mkdb",dbconn,1,1
Do While Not rseof
Responsewrite Rs("v_oid") & "<br />"
Rsmovenext
loop
FreeDbConn(dbconn)
ResponseWrite "free one connection to pool <br />"
ResponseWrite "Current Objects count : " & DbPoolCount & "<br />"
%>
以上就是关于德鲁伊连接池在哪学习全部的内容,包括:德鲁伊连接池在哪学习、如何查询SQL SERVER中连接池的最大连接数、Druid源码分析(四) 从连接池获取数据库链接getConnectionDirect()等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)