2013-02-19 39 views

回答

4

連接池在客戶端執行。爲了訪問它,您需要使用反射來訪問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」(一個Queue<>)和「inUsePool」(一個List<>),您也可以訪問,特別是計數。