文档首页
MySQL Connector/NET 开发人员指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发人员指南  /  Connector/NET 连接  /  在 Connector/NET 中管理连接池

4.2 在 Connector/NET 中管理连接池

MySQL Connector/NET 支持连接池,以提高数据库密集型应用程序的性能和可扩展性。默认情况下启用此功能。您可以使用连接字符串选项 PoolingConnection ResetConnection LifetimeCache Server PropertiesMax Pool SizeMin Pool Size 关闭或调整其性能特征。有关更多信息,请参见第 4.1 节,“创建 Connector/NET 连接字符串”

连接池通过在客户端处置 MySqlConnection 时保持与服务器的本机连接活动来工作。随后,如果打开新的 MySqlConnection 对象,则它是从连接池中创建的,而不是创建新的本机连接。这提高了性能。

准则

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

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

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

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

资源使用

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

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