2010-07-07 2 views
1

Je suis encore en train d'apprendre les bases de l'OLAP, des cubes et du SSAS, mais je suis en train d'atteindre une barrière de performance et je ne suis pas sûr de comprendre ce qui se passe. J'ai donc un cube simple, qui définit deux dimensions simples (type et surface), une troisième hiérarchie de dimension temporelle (va Year-> Quarter-> Month-> Day-> Hour-> 10-Minute), et une mesure (somme sur un champ appelé Count). La base de données suit les événements: quand ils se produisent, quels types sont, où ils se sont produits. La table de faits est un résumé précalculé des événements pour chaque intervalle de 10 minutes. Donc, je configure mon cube et j'utilise le navigateur pour voir tous mes attributs en même temps: nombre total de zones par type dans le temps, avec un zoom depuis Année jusqu'à l'intervalle de 10 minutes. Les rapports sont similaires en termes de performances à la navigation.Pourquoi mon cube calcule-t-il si lentement au niveau d'exploration le plus bas?

Pour l'essentiel, c'est assez rapide. Mais à mesure que je m'enfonce dans l'arbre d'exploration, il faut plus de temps pour voir chaque niveau. Enfin, au niveau des minutes, il semble qu'il faille environ 20 minutes avant d'afficher les six enregistrements. Mais j'ai alors réalisé que je pouvais voir les autres explorations de niveau minute sans attendre, donc il semble que le cube calcule la table entière à ce moment-là, ce qui explique pourquoi cela prend tellement de temps.

Je ne comprends pas. Je m'attendrais à ce que le passage à Quarters ou Years prenne le plus de temps, puisqu'il doit regrouper toutes les données. Aller à la métrique la plus basse, filtrée lourdement autour de 180 cellules (6 intervalles, 10 types, 3 zones), semble être la plus rapide. Pourquoi le cube traite-t-il l'intégralité de l'ensemble de données au lieu du seul sous-ensemble visible? Pourquoi le plus haut niveau d'agrégation est-il si rapide et le niveau le plus bas si lent? Plus important encore, y a-t-il quelque chose que je puisse faire par configuration ou conception pour l'améliorer? Quelques détails supplémentaires que je viens de penser à ce qui peut importer: Il s'agit de SSAS 2005, exécuté sur SQL Server 2005, en utilisant Visual Studio 2005 pour la conception BI. Le cube est défini (par défaut) sur MOLAP complet, mais n'est pas partitionné. La table de faits a 1.838.304 lignes, donc ce n'est pas une folle base de données d'entreprise, mais ce n'est pas non plus un test simple. Il n'y a pas de partitionnement et tout le matériel SQL s'exécute sur un serveur, auquel j'accède à distance depuis mon poste de travail.

Répondre

0

Lorsque vous regardez le niveau des minutes - parlez-vous de tous les événements de 12h00 à 12h10 quel que soit le jour? Je pense que si vous avez besoin de cela pour aller plus vite (parce que, évidemment, tout serait scanné), vous devrez rendre les deux parties de votre dimension "temps" orthogonales - faites une dimension date et une dimension temps.

Si vous obtenez 1/1/1900 12:00 à 12:10 1/1/1900, je ne suis pas sûr de ce qu'il pourrait être alors ...

+0

C'est une bonne théorie, je l'ai vérifié pour être sûr, mais ce n'est pas le cas. Regarder le cube foré pour 2009-Q1-Janvier-1-0 me donne un compte pour chaque 10 minutes. J'ai ensuite utilisé ces dates dans une requête SQL par rapport aux données d'origine et j'ai confirmé que la somme (count) est correcte. Ce que je regarde, c'est les totaux pour chaque tranche de 10 minutes dans cette fenêtre d'heure, et il montre aussi les totaux globaux pour: chaque heure de ce jour, chaque jour de ce mois, etc. Mais tous étaient là avant. Mais maintenant je peux forer "gratuitement" n'importe où parce que le navigateur a chargé le cube entier dans la mémoire. – CodexArcanum

0

Avez-vous vérifié les agrégations de votre cube pour s'assurer qu'ils étaient corrects? Un moyen facile de le dire est que si vous obtenez la même quantité d'enregistrements, peu importe ce que l'arbre de forage vous descendez. En supposant que ce ne soit pas le cas, ce que Cade suggère de faire une dimension Date et une dimension Temps serait l'approche la plus évidente, mais c'est un plus grand non-non dans SSAS. Voir cet article pour plus d'informations: http://www.sqlservercentral.com/articles/T-SQL/70167/

Espérons que cela aide.

+1

Cet article de SQL Server Central a été presque universellement balayé dans la discussion suivante parce que 1) la gestion des dimensions CTE était inefficace et 2) les dimensions de date et heure séparées sont généralement reconnues comme supérieures pour presque tous les usages d'analyse –

+0

En fait, étant donné que j'avais l'impression que les analystes recommandaient universellement un DateTimeTable pour OLAP. Semblait aussi fondamental qu'un hashmap à ce champ. Merci pour l'opinion dissidente, agréable de voir toutes les pensées sur la question. – CodexArcanum

+1

@CodexArcanum Je n'ai pas vu de table DateTime. Dans Kimball, c'est toujours une dimension de date avec une clé int naturelle de la forme YYYYMMDD et une dimension temporelle (dans le grain approprié) avec une clé int naturelle de HHMMSS. Le SEUL cas où un DateTime serait utile est pour des plages arbitraires avec la date et l'heure - tout à partir de 08h38 du lundi à 10h25 le vendredi, par exemple. Ceux-ci sont relativement rares et comme il est fondamentalement continu, il est possible que ce soit mieux une colonne de fait datetime qui est un filtre supplémentaire dans la requête (qui spécifie déjà un critère de dimension de date pour se rapprocher). –

0

Je vérifierais également vous assurer que vous utilisez la dernière sp pour le serveur SQL 2005

La version RTM a eu quelques problèmes SSAS perf.

également vérifier que vous avez correctement défini les relations d'attribut sur votre dimension de temps et d'autres dims.

Ne pas avoir ces relations définies sera le moteur de stockage SSAS pour numériser des données alors nécessaires

plus d'info: http://ms-olap.blogspot.com/2008/10/attribute-relationship-example.html

comme indiqué plus haut, le fractionnement la date et l'heure diminuera considérablement la cardinalité de date dimension qui devrait augmenter la performance et permettre une meilleure expérience analytique.

Questions connexes