Aracılığıyla paylaş


SQL Server 2008 Analysis Services'da mdx performans geliştirmeleri

Bu sürüm için Analysis Services, özel vurgu yürütülmesine performansı artırmak için gerçekleştirilençok boyutlu ifadeleri (mdx) hesaplamaları. Altyapı mimarisi bu performans artışı elde etmek için birkaç önemli değişiklikler yapmış.Ancak, bu performans iyileştirmelerinden yararlanmak için onu mdx kodunuzda en iyi duruma getirmek gereklidir.

Bu belge, burada sizin varolan mdx içinde sorunlar oluşabilir anlamanıza yardımcı olacaktır kod performans iyileştirmeleri yaşamaya gelen önlemek ve nasıl kendi yeni mdx kodlama içinde bu sorunları önlemek öneriler sağlar.Bu belge ayrıca performans iyileştirmeleri yararlı işlevler listesini içerir.

mdx içinde maksimum performans artışı elde etmek için kodunuzu gözden geçirme

Kodunuzu gözden geçirirken, aşağıdaki önlemek deneyin küme sağlandığı karşı kendi mdx deyimleri engelleyebilir gibi senaryoları veya kodlama durumlarda performans, uygulanan başlangıç artışı SQL Server 2008 Analysis Services (SSAS).Listelenen durumları önlemek için kodunuzu değiştirmek için pratik bir yolu yoktur, ancak, aynı olduğu için mdx kod bekleyebileceğiniz düzey gibi performans SQL Server 2005 Analysis Services (SSAS).

Yararlı tanımları

Boşluk

Üzerinde bir ifade değerlendirilen hücre küme.

Rasgele şekli

Çapraz ifade edilemeyen bir alan birleştirmek , iki veya daha fazla.Örneğin, alan {(Drink, USA), (Food, Canada)} temsil eden bir şekil alt küme küme küme kümesi arasında çapraz birleştirmek olmadığından {Drink, Food} * {USA, Canada} = {(Drink, USA), (Drink, Canada), (Food, USA), (Food, Canada)}.

Statik ifade

Bir ifade, alan hesaplanan sabit üzerinde olduğunda statik olduğu söylenir.

Örneğin, üzerinde yer CrossJoin(Product.Members, Customer.Members) aşağıdaki ifadeler var. invariant

  • 1, sabit ifade

  • Product.Members.Count

Dinamik ifade

Bir ifade, her hücre için farklı bir değer olarak alan üzerinde hesaplandığı çözümlendiğinde dinamik olduğu söylenir.

Örneğin, üzerinde yer CrossJoin(Product.Members, Customer.Members) aşağıdaki ifadeler var. dinamik

  • Sales, satış olduğu için bir ölçü değerini alan her hücre için farklıdır.

Değişen öznitelik

Değişen bir öznitelik sürücüler yol ifadesi değerlendirilir ve bunun üzerine ifade bağımlı hale getirir.Örneğin, ifade Customer.Geography.CurrentMember bağlıdır niteliklerini Coğrafya hiyerarşi.

Genellikle, değişik niteliklere ifadeleri değerlendirilme alanı azaltın.Aşağıdakileri dikkate alın ifade:

with member measures.x as Customers.Geography.currentmember.uniquename

Select Customers.Geography.City.members on 0,

Product.members on 1

From sales

Where measures.x

Bu ifadede, Customers.Geography statik bir ifade.The currentmember function is a varying attribute because it introduces a dependency on the City attribute.Uniquename adds no varying attributes because it is bound to currentmember in a 1:1 relationship.Bu yüzden, uniquename tek bir Değerlendirilmiş olur saat her müşteri ve her biri için yinelenen Product.Bu nedenle, tüm ifade boş alan etkin bir şekilde değişen üzerinden azaltıldığı öznitelik.

Hücre özelliklerini değeri olmayan ifadelerin kullanımı

Tüm mdx ifade değerini olmayan atamak için kullanılan bir hücrenin özellik değil performans iyileştirmeleri yarar.Performansı aynı anda kalacak düzey olarak SQL Server 2005 Analysis Services (SSAS).

Listede olmayan fonksiyonların kullanımı

mdx kodunuzda bu belgede listelenen herhangi bir işlev kullanımını bu ürün sürüm beklenen performans kazanç çok yararlı olacaktır.Bkz: Functions with enhanced performance Bu belge.

Hücre güvenlik kullanım

Hücre güvenlik tanımladığı bir alan bir mdx ifade değerlendirme kodunuzu geliştirilmiş performans kazanmasını engelleyecektir.

Hücre güvenlik ve performans arasındaki ilişki Aşağıda, sunulan tablo.

Hücre güvenlik

Beklenen performans

Hiçbiri

En iyi

Okuma

Orta

Ekip okuma

En düşük

See Hücre veri izinler için mdx ifadeleri kullanma and Hücre veri özel erişim izni verme

Dinamik Dimensionality kullanım

mdx kodunuzda ifadeler dinamik dimensionality kullanım kodunuzu geliştirilmiş performans kazanmasını engelleyecektir.Örneğin ifadeler gibi Sum( IIF( Sales > 10000, h1.Members, h2.Members)) olarak toplanacak üye kodunuzu değiştirmekte olduğundan yararı olmadığı Sales ifade değerlendirildi.Başka bir örnek, gereken ya da kullanmak için bir senaryo olabilir bir üye Takvim yılın veya bir üye ait olduğu geçerli bir öznitelik bağımlı olan mali yıl hiyerarşileri arasında üye paralel bir süre karşılığı değeri ile bir karşılaştırma yapmak için hesap öznitelik.mdx ifade bu senaryo için aşağıdaki örnek kodu benzeri için gerekli.

ParallelPeriod(Iif( Account.CurrentMember.Properties("UsesFiscalCalendar")="Y", FiscalTime, CalendarTime).CurrentMember)

Yine, boyutları hesap boyut değişiklikleri geçerli üye olarak dinamik olarak değiştirin.

Dinamik parametrelerinin kullanımı

Dinamik parametreleri mdx kodunuzda kullanım kodunuzu geliştirilmiş performans kazanmasını engelleyecektir.Örneğin, bir ifade gibi KpiGoal("Sales_" & [Fiscal Year].currentmember.UniqueName) ifadesi değişir dayalı olacağı da hesaplanır, buna karşılık, hücreler üzerinden KpiGoal("Sales_" & Cstr(Year(Now))) ' dir. invariant

Önemli notÖnemli

durum olabilir, ifade KpiGoal("Sales_" & [Fiscal Year].currentmember.UniqueName) değerlendiren alanı üzerinden aynı değere emin olduğu hesaplanan inçAncak, beklenen performans artışı sağlamak altyapısı için yeterli olmayacaktır.

Dinamik üye başvuruları

mdx kodunuzda herhangi bir dinamik üye başvurusu kullanımını kodunuzu geliştirilmiş performans kazanmasını engelleyecektir.Örneğin, aşağıdaifade

(IIF( e, mbr1, mbr2), Sales)

Sonuçta bilmek bir yolu yoktur tanımlama grubu kadar IIF() deyiminin yürütme süresi.Bununla birlikte, aşağıdaki karşılık gelenifade

IIF( e, (mbr1, Sales), (mbr1, Sales))

değerlendirmeden önce sonuç dizilerini biri bilinen ifade e.

Kullanıcı tanımlı saklı yordamlar (com veya.NET)

Kullanıcı tanımlı saklı yordamlar mdx kodunuzda kullanım kodunuzu geliştirilmiş performans kazanmasını engelleyecektir.

Not

Analysis Services performans iyileştirmeleri için en iyi duruma getirilmiş saklı yordamlar sağlar.

Adlandırılmış kümeleri veya diğer ad ayarlamak parametrelerinde kullanım

Adlandırılmış küme veya küme diğer ad ad işlevler de ilk parametre olarak kullanılan saat Sum, Min, Max, Avg, veya Aggregate mdx kodunuzda kodunuzu değil yararlı performans geliştirmeleri.

Örneğin, aşağıdaki mdx ifade birden çok alt kaç üye var sayar.

Sum(h.members as S, Iif(S.Current.Children.Count > 1, 1, 0))

Çünkü h.members takma adlı olarak yükleniyor S ve daha sonra geçerli işlev değeri takma adlı ' alınan küme, dan elde performans beklenen geliştirme engeller.

Bu durum, bir başka yaygın örnek aşağıdaki kodu gösteriliyor.

WITH

SET [Core Products] AS '{[Product].[Category].[Bikes]}'

MEMBER [Measures].[Core Products Sales] AS SUM([Core Products], [Measures].[Internet Average Unit Price] * [Measures].[Internet Order Quantity])

Select [Measures].[Core Products Sales] on 0

From [Adventure Works]

The SUM function in the member definition does not obtain the expected performance improvement because it is based on a named set.

Özel toplaması deyimler geç bağlarında kullanımı

Tüm saat özel toplaması ifade Hesaplanan üye veya yürütme sırasında değerlendirilen herhangi bir mdx deyimi başvuran saat, özel toplaması ifade geliştirilmiş performans engeller.

İleriye doğru başvuru komut kullanımı

Oluşturduğunuz saat, performans iyileştirmeleri kodunuzu mdx kodunuzda ayrı ifadelerine ileriye doğru tanım başvuruları yararlı olacaktır.Örneğin, aşağıdaki mdx komut dosyası kod parçasında İleri başvuru sırasında y üzerine tanımı oluşturulur.

Create Member X as Y * 2;

Create Member Y as ( Sales, [Date].[Calendar].[Month].PreviousMember);

Bu durumu düzeltmek için önce y tanım olarak aşağıdaki kod parçasında tanımı x koyun.

Create Member Y as ( Sales, [Date].[Calendar].[Month].PreviousMember);

Create Member X as Y * 2;

Gelişmiş Performans işlevleriyle

Skalar işlevleri

Aşağıdaki listede, skaler işlev geliştirilmiş performans görmek beklemelisiniz işlevleri içerir.Listedeki ilk sütun skaler işleçleri içerir.

-

OR

KEY

*

XOR

LEVELS.COUNT

/

CALCULATIONPASSVALUE

MEMBERTOSTR

+

CASE

MEMBERVALUE

<

COALESCEEMPTY

NAME

<=

HIERARCHIES.COUNT

ORDINAL

<>

ID

PROPERTIES

=

IIF

UNIQUENAME

>

IS

USERNAME

>=

ISANCESTOR

VALIDMEASURE

unary minus

ISEMPTY

VALUE

NOT

ISLEAF

 

AND

ISSIBLING

 

Not

Tüm kullanıcı tanımlı saklı yordam, com veya yönetilen kod için karşılaştırıldığında performans herhangi bir geliştirme görmez SQL Server 2005 Analysis Services (SSAS).Daha fazla bilgi için bkz: kullanıcı tanımlı saklı yordamları (com veya.Bu belgede daha önceki net).Hazır bilgi ya da sayısal, sabit ifadelere performans iyileştirmeleri yararlı olacaktır.

Üye işlevler

Aşağıdaki liste üye işlevleri geliştirilmiş performans görmek beklemelisiniz işlevleri içerir.

.CurrentMember

.FirstSibling

.LastSibling

.DataMember

.Item

.Lead

.DefaultMember

.Lag

.Parent

.FirstChild

.LastChild

.UnknownMember

Ancestor

KPIStatus

NextMember

Ancestors

KPITrend

OpeningPeriod

Ascendants

KPIValue

ParallelPeriod

ClosingPeriod

KPIWeight

PrevMember

Cousin

LastPeriods

StrToMember(<String Expression>, CONSTRAINED)

KPIGoal

LinkMember

 

Not

StrToMember(<String Expression>, CONSTRAINED)ne zaman mümkün olan en iyi performansı elde eder <String Expression> statik bir ifade.

Set işlevleri

küme işlevleri aşağıdaki liste geliştirilmiş performans görmek beklemelisiniz işlevleri içerir.

Aggregate

Max

Sum

Avg

Min

 

Ancak, birinci parametre listelenen işlevlerini kullandığınızda, aşağıdaki işlevlerin herhangi bir birleşimini kullanan bir ifade olması gerekir.

- (işleç dışında)

.Children

MTD

(<set expression>,(<set expression>, …,(<set expression>) (çapraz birleşim işleç)

.Members

PeriodsToDate

* (çapraz birleşim işleç)

.Siblings

QTD

: (aralık işleç)

AddCalculatedMembers

StrToSet(<String Expression>, CONSTRAINED)

+ (birleşim işleç)

Crossjoin(<set expression>,(<set expression>, …,(<set expression>)

Tail

 

Descendants

Union

 

Distinct

Unorder

 

Except

WTD

 

Hierarchize

YTD

 

Intersect

 

Not

Boş küme dahil olmak üzere statik ayarlar beklenen performans artışı çok yararlı olacaktır.

vba işlevleri

Aşağıdaki liste vba işlevleri geliştirilmiş performans görmek bekleyebileceğiniz işlevleri içerir.

Abs

CLng

Len

CDate

CStr

Şimdi

CDbl

Int

Sağ

CInt

Sol

Round

Aşağıdaki vba işlevleri için işlev çeşitli öznitelikleri değerlendirilir geliştirilmiş performans görmek bekleyebilir.

ASC

Biçim

Sgn

AscW

GD

Sin

Atn

Hex

DA

CBool

Saat

Boşluk

CByte

FAİZTUTARI

Sqr

CCur

LCase

Str

CDec

Günlük

StrComp

Chr

LTRIM

StrConv

ChrW

Dakika

String

Cos

Ay

YAT

CSng

Taksit sayısı

Tan

CVar

Eki

Timer

Date

Bölüm

TimeSerial

DateAdd

Devresel ödeme

ZAMANSAYISI

DateDiff

Ana_para_ödemesi

Rüzgar

DatePart

BD

TypeName

DateSerial

QBColor

UCase

TARİHSAYISI

Hızı

Val

Günü

RBG

İş günü

ÇİFTAZALANBAKİYE

Rnd

Yıl

Exp

RTrim

 

Düzeltme

İkinci