Ошибка MDX: оптимизатор запросов сгенерировал слишком много вложенных кубов в плане запроса - PullRequest
3 голосов
/ 14 января 2010

Я пытаюсь обратиться к кубу на SQL Server 2008 с огромным запросом MDX.

Этот запрос содержит более 20 вычисляемых элементов (определенных в запросе).

Каждый элемент содержит ограничение для измерения в кубе. Не всегда нужны все размеры, но иногда это необходимо.

Ну, это прекрасно работает до 16 членов. С более чем 16 участниками появляется сообщение об ошибке: «Оптимизатор запросов сгенерировал слишком много вложенных кубов в плане запроса».

Есть ли способ решить эту ошибку?

Спасибо!

Julieta

1 Ответ

1 голос
/ 03 февраля 2010

Вы застряли в узком месте производительности, и я думаю, что вашим первым шагом будет определение того, находится ли узкое место производительности в механизме формул или хранилище. Для этого определите количество времени, необходимое механизму формул и механизму хранения для выполнения неэффективного запроса многомерных выражений, когда кэш холодный. Время, затраченное механизмом хранения, можно определить, сложив прошедшее время для каждого события вложенного куба в трассировке SQL Server Profiler. Время, потраченное механизмом формул, можно определить путем вычитания времени, потраченного механизмом хранения, из общего времени выполнения события завершения запроса.

У вас уже есть старт, потому что вы знаете, что 16-й вычисленный элемент вызывает ошибку, чтобы вы могли работать в обратном направлении, чтобы определить, что ограничивает события вложенного куба.

См. Эту статью для получения более подробной информации об этом: http://74.125.95.132/search?q=cache:XgP38c6S9-UJ:www.badlydressedboy.com/docs/IdentifyingAndResolvingMDXBottlenecksSSAS.doc+query+optimizer+generated+too+many+subcubes+in+the+query+plan&cd=14&hl=en&ct=clnk&gl=us

...