由于网络连通性问题,建立数据库连接可能很费时。如果网络出现问题,且数据库资源可用,则连接缓冲池是一个可行的选项。这一主题似乎与我最近谈到的关于处理连接的文章有冲突,但我稍后会在本栏目中解决这个问题。我先讨论一个连接缓冲池,然后说明它在.NET应用程序中的使用方法。
缓冲池简介
建立数据库连接分几个步骤。首先,要与网络数据库服务器建立连接。接着,解析连接字符串并对用户进行验证。最后,建立连接并执行操作。连接缓冲池允许应用程序维持一个数据库连接的所有权。
连接缓冲池维持一组(或一池)活动数据库连接。当一个应用程序试图打开一个数据库连接时,缓冲池(如可用)恢复一个开放的连接。关闭连接则将它返回到缓冲池给其他进程使用。
ADO.NET缓冲池连接拥有同样的连接或配置(连接字符串)。它能维持一个以上的缓冲池(实际上,每个配置一个缓冲池)。有用的提示:除非另有说明,(默认情况下)程序利用连接缓冲池。如果你关闭或中断所有连接,那么就没有缓冲池(因为没有有效的连接)。
虽然保持数据库连接一直开放会引起麻烦,但由于这样不必再次打开连接,所以对于应用程序与数据库之间的即时通信会有好处。一些数据库管理员可能并不赞成这一做法,因为数据库同时打开了几个连接(但并非所有连接都有用)。要根据有效的服务器资源与应用程序需求(即是否确实有需要)来应用连接缓冲池。
应用连接缓冲池
默认情况下,连接缓冲池处于活动状态。你也可以通过修改连接字符串中的缓冲池设置来撤销默认行为。下面的SQL Server连接字符串并未利用连接缓冲池。
Data Source=TestServer;Initial Catalog=Northwind;
User ID=Chester;Password=Tester;Pooling=False;
其它.NET数据供应者(Data Provider)也可以使用同样的方法。你可以将其值设为真(或除掉Pooling变量使用默认行为)来激活它。另外,连接缓冲池的默认大小为100,但你也可以用连接字符串变量来修改它。你可以用下面的变量来控制缓冲池的最大与最小值,以及事务支持:
下面的SQL Server连接字符串使用了一个连接缓冲池,其最大连接数目为100,最小连接数目为5:
Data Source=TestServer;Initial Catalog=Northwind;
User ID=Chester;Password=Tester;Max Pool Size=50;
Min Pool Size=5;Pooling=True;