Моя база данных служб Analysis Services очень медленно реагирует после обработки.Проблема может быть воспроизведена также путем очистки кеша с помощью команды ClearCache XMLA.Я понимаю, что после очистки кэша производительность запросов снижается, но при использовании библиотеки Microsoft.AnalysisServices.AdomdClient наблюдается низкая производительность.
Я провел небольшой тест синхронизации.
DateTime start = DateTime.Now;
int dc = cube.Dimensions.Count; // cube = Microsoft.AnalysisServices.AdomdClient.CubeDef
DateTime end = DateTime.Now;
Debug.WriteLine("Start: " + start.ToLongTimeString());
Debug.WriteLine("Dimensions count: " + dc.ToString());
Debug.WriteLine("End: " + end.ToLongTimeString());
Например, это даст следующий результат
Start: 8:41:53
Dimensions count: 18
End: 8:43:15
Таким образом, для подсчета размеров требуется почти 1,5 минуты.Та же производительность, если я получу меры (которых всего несколько).
После первой операции все последующие операции и запросы выполняются быстро.Мой вопрос заключается в том, как я могу обойти эту проблему?Это реальная проблема, когда база данных перестает отвечать на запросы после каждой обработки базы данных.Я мог бы сделать что-нибудь, чтобы автоматически «запустить» базу данных после обработки, но разве это не переместило бы время ожидания из одного места в другое?
Обновление: я обнаружил проблему.Причина, по которой производительность была разной в Management Studio и AdomdClient, заключалась в том, что в AdomdClient у меня была другая строка подключения к базе данных служб Analysis Services.У меня есть некоторые пользовательские вещи в базе данных, которые сработали с этой строкой соединения.В любом случае, проблема теперь решена и не связана напрямую с реальными службами Analysis Services.
Извлеченный урок: убедитесь, что вы тестируете правильную строку подключения:)