gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:04:33 27 4
gpt4 key购买 nike

是否有编程方式来查找当前由 .Net 连接器/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目的。它为每个连接字符串创建一个单独的池,因此请使用您在应用中使用的相同连接字符串(它需要完全相同)。

然后您可以访问私有(private)池字段和属性(再次使用反射),以获取您需要的信息。特别是,您可能会对“可用”字段和“NumConnections”属性感兴趣。还有您也可以访问的“idlePool”(Queue<>)和“inUsePool”(List<>),尤其是计数。

关于c# - 如何查询当前MySQL .Net connector连接池的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com