For
Open Database Connectivity (ODBC), OLE DB,
and Microsoft ADO.NET managed providers, connection pooling creates and maintains
a group of connections to databases or to other data stores. Connection
pooling uses
connections
from this group when you later
request a connection to that data store.
Applications open a connection to a data store, and then release the connection. The connection is added to the pool of connections that have complete authentication information and connection properties. Then, if the connection is available, applications can reuse it for requests to the same data store. The data store has the same user authentication information and connection properties.
When connection pooling is enabled, a
separate connection pool is created for each unique combination of a Windows
account token and a connection string. The following table summarizes the performance concerns and scalability concerns for different connection pooling configuration settings and delegation configuration settings.
Collapse this tableExpand this table
| Pooling with delegation | Pooling
without delegation | No pooling
with or without delegation |
Number of pools | N (the number of
users) | 1 | 0 |
Number of connections at any time | The sum of
the maximum number of connections that are opened by each account
identity | The maximum number of the connections that were ever used at
any time | The number of the connections that are currently open |
Performance | The performance is good. However,
the connection pool may use more unnecessary connections, especially if many users
want to change the use
of the connections periodically.
Connections that
remain in the
connection pools are dedicated to
a user, even if the user is not using the operating system any longer. | This option provides the best performance. A single connection pool
is shared by everyone because the same account is used to connect to Microsoft
SQL Server. | The performance is lower than the other two options,
but performance is acceptable.
SQL Server must constantly
process the additional logins and logouts.
This can be monitored by using Performance Monitor (perfmon). |
Client resources for the application on a server that is running Internet Information Services | High | Medium | Low |
SQL Server resources | High number of concurrent connections.
Low number of logins or logouts per second. | Medium number of concurrent
connections. Lowest number of logins or logouts per second. | Low number
of concurrent connections. Higher number of logins or logouts per second. |
Note Connection pooling may produce poor
results in delegation scenarios where there are many unique accounts.
In these situations, you can disable connection pooling to maintain scalability
and stability.