我遇到了WMI查詢的問題。 我使用WMI查詢來搜索和恢復BizTalk中的實例。 當沒有那麼多的實例時(所以當數據不那麼多時)查詢性能很好。 但是,當數據很大(約3000個實例)時,查詢需要大約6-10秒才能執行,這是不可容忍的。WMI性能查詢
守則如下:
string query = "SELECT * FROM MSBTS_ServiceInstance WHERE InstanceID = \"" + OrchestrationId + "\"";
ManagementObjectSearcher searcher = new ManagementObjectSearcher(new ManagementScope(@"root\MicrosoftBizTalkServer"), new WqlObjectQuery(query), null);
int count = searcher.Get().Count;
if (count > 0)
{
string[] strArray = new string[count];
string[] strArray2 = new string[count];
string[] strArray3 = new string[count];
string str2 = string.Empty;
string str3 = string.Empty;
int index = 0;
foreach (ManagementObject obj2 in searcher.Get())
{
if (str2 == string.Empty)
{
str2 = obj2["HostName"].ToString();
}
strArray2[index] = obj2["ServiceClassId"].ToString();
strArray3[index] = obj2["ServiceTypeId"].ToString();
strArray[index] = obj2["InstanceID"].ToString();
str3 = str3 + string.Format(" {0}\n", obj2["InstanceID"].ToString());
index++;
}
new ManagementObject(string.Format("root\\MicrosoftBizTalkServer:MSBTS_HostQueue.HostName=\"{0}\"", str2)).InvokeMethod("ResumeServiceInstancesByID", new object[] { strArray2, strArray3, strArray, 1 });
這是需要長期在德數據挺大的第一個查詢(從MSBS_ServiceInstance選擇* ..)。
任何想法,我可以改善這一點? 該平臺是Windows Server 2008 Enterprise ..
Thx!
出於好奇,爲什麼你會得到這麼多的暫停實例?對於我來說,編寫一個腳本來重新啓動它們似乎很奇怪,因爲當您可能將重點放在導致它們首先被暫停的原因上時。 – aceinthehole 2011-05-12 17:34:43