我为什么要使用连接池?

l33*_*33t 4 c# mysql connection-string connection-pooling

在我的C#应用​​程序中,我连接到MySQL数据库并运行10,000个查询.如果我保持与数据库的连接,这些查询大约需要14秒.但是,如果我依赖连接池,我的查询大约需要15秒.(我已多次运行此测试.)

// Connection pooling.
using (var connection = CreateConnection())
{
    connection.ConnectionString = ConnectionString;
    connection.Open();
Run Code Online (Sandbox Code Playgroud)

网上的大多数样本都使用上面的"连接和关闭"结构.但是,似乎连接池比保持连接慢.所以问题是......

问:我为什么要使用连接池?

Jon*_*eet 6

问:我为什么要使用连接池?

通常,您可以一次使用多个连接.这对于Web应用程序来说显然很重要 - 您不希望一个用户查询必须等待另一个用户的查询完成.

如果您正在编写一个直接与数据库对话的胖客户端应用程序,并且您知道一次只执行一个查询,那么它就不那么重要 - 但它仍然是全局状态,这往往是您应该避免的.你正在做几件独立的事情 - 你为什么限制它们使用相同的连接?


Tal*_*han 5

这是一个值得商big的话题,在那里会发现很多博客,这说明了我们为什么使用Pool。

它不会减慢速度。在连接到数据库服务器和握手以及在客户端和数据库服务器之间建立通信上花费了大量时间。

因此,在服务器处理许多请求的多请求范例中,很难建立并等待每个客户端。POOL帮助我们提供了预先准备好的连接,我们使用它并将其丢弃。POOL获取该连接并为下一个请求重新建立连接。

但是在单线程环境中则相反。对于单线程环境,POOL将是非常繁重的资源。