c# – 如何查询MySQL的.Net连接器的连接池的当前大小?

是否有一种编程方式来查找由.Net connector / MySql.Data.dll维护的数据库的当前打开连接数?我有兴趣在使用库的同一程序中收集此信息.解决方法:连接池在客户端执行.要访问它,您需要使用反射来访问MySqlPoolManager...

是否有一种编程方式来查找由.Net connector / MySql.Data.dll维护的数据库的当前打开连接数?

我有兴趣在使用库的同一程序中收集此信息.

解决方法:

连接池在客户端执行.要访问它,您需要使用反射来访问MySqlPoolManager和MySqlPool类,它们都是MySql.Data程序集的内部类.

基本上,你会想要使用反射来到池中.这是如何做:

Assembly ms = Assembly.LoadFrom("MySql.Data.dll");
Type type = ms.GetType("MySql.Data.MySqlClient.MySqlPoolManager");
MethodInfo mi = type.GetMethod("GetPool", BindingFlags.Static | BindingFlags.Public);
var pool = mi.Invoke(null, new object[] { new MySqlConnectionStringBuilder(connString) });

您会注意到您必须传入MySqlConnectionStringBuilder对象.它为每个连接字符串创建一个单独的池,因此使用您在应用程序中使用的相同连接字符串(它必须完全相同).

然后,您可以访问私有池字段和属性(再次使用反射),以获取所需的信息.特别是,“可用”字段和“NumConnections”属性可能是您感兴趣的.还有“idlePool”(队列<>)和“inUsePool”(列表<>),您也可以访问它们,特别是计数.

本文标题为:c# – 如何查询MySQL的.Net连接器的连接池的当前大小?

基础教程推荐