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 |
---|
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 |
|