MySQL 连接器/NET 开发人员指南  / 第 4 章连接器/NET 连接  /  4.2 在 Connector/NET 中管理连接池

4.2 在 Connector/NET 中管理连接池

MySQL Connector/NET 支持连接池,以提高数据库密集型应用程序的性能和可扩展性。这是默认启用的。Pooling您可以使用连接字符串选项、Connection ResetConnection LifetimeCache Server Properties和将其关闭或调整其性能 Max Pool Size特征 Min Pool Size。有关详细信息,请参见 第 4.1 节 “创建连接器/NET 连接字符串”

连接池的工作原理是在客户端处理 MySqlConnection. 随后,如果 MySqlConnection打开了一个新对象,它将从连接池中创建,而不是创建一个新的本机连接。这提高了性能。

准则

要按设计工作,最好让连接池系统管理所有连接。不要创建全局可访问的实例,MySqlConnection然后手动打开和关闭它。这会干扰池的工作方式,并可能导致不可预测的结果甚至异常。

一种简化事情的方法是避免 MySqlConnection手动创建对象。相反,使用将连接字符串作为参数的重载方法。通过这种方法,Connector/NET 自动创建、打开、关闭和销毁连接,使用连接池系统以获得最佳性能。

类型化数据集和MembershipProviderRoleProvider使用这种方法。大多数具有将 a MySqlConnection作为参数的方法的类,也具有将连接字符串作为参数的方法。这包括MySqlDataAdapter

MySqlCommand您可以使用类的静态方法 代替手动创建对象MySqlHelper。这些方法将连接字符串作为参数,并且完全支持连接池。

资源使用

Connector/NET 每三分钟运行一次后台作业,并从池中删除空闲(未使用)超过三分钟的连接。池清理释放客户端和服务器端的资源。这是因为在客户端,每个连接都使用一个套接字,而在服务器端,每个连接都使用一个套接字和一个线程。

多个端点。  从 Connector/NET 8.0.19 开始,一个连接字符串可以包含多个启用了连接池的端点 ( )。在运行时,Connector/NET 从池中随机选择一个地址(或在提供时按优先级选择)并尝试连接到它。如果连接尝试不成功,Connector/NET 会选择另一个地址,直到地址集用完为止。不成功的端点每两分钟重试一次。成功的连接由连接池机制管理。 server:port