SQL Server 2008 Analysis Services'da MDX için performans geliştirmeleri
Bu sürüm içinAnalysis Servicesözel vurgu çok boyutlu ifadeler (MDX) hesaplamaları. yürütülmesine performansını artırmak için alınmış,Bu performans artışı elde etmek için altyapı mimarisi için birkaç önemli değişiklikler yaptınız.Ancak, bu performans iyileştirmelerinden yararlanmak için MDX kodunuzu en iyi duruma getirmek gereklidir.
Bu belge varolan, MDX sorunlar burada oluşabilir anlamanıza yardım edecektir kod performans artışı karşılaşan gelen önlemek ve yeni, MDX kodlama, bu sorunları önlemek hakkında öneriler sağlar.Bu belge, performans artışı yararlı işlevleri listesi de içerir.
MDX, en yüksek performans kazançları elde kodunuzu gözden geçirme
Kodunuz, gözden geçirme denemek aşağıdaki senaryoları kümesini önlemek veya bunlar engellemek, MDX deyimlerinden performans artışı beklenen sağlandığı gibi durumlarda kodlamaSQL Server 2008 Analysis Services (SSAS).Listelenen durumları önlemek için kodunuzu değiştirmek için pratik bir yol varsa, ancak aynı olduğu için MDX kodunuzu bekleyebileceğiniz düzey gibi performansSQL Server 2005 Analysis Services (SSAS).
Yararlı tanımları
Alan
küme hücre üzerinde bir ifade olarak değerlendirilir.
Rasgele şekli
Çapraz birleştirmek, iki veya daha fazla ifade edilemeyen bir alan.Örneğin, alan{(Drink, USA), (Food, Canada)}rasgele bir şekil için alt küme küme küme kümesi arasında çapraz birleştirmek olduğunu gösterir{Drink, Food} * {USA, Canada} = {(Drink, USA), (Drink, Canada), (Food, USA), (Food, Canada)}.
Statik ifade
ifade, alan hesaplanan sabit üzerinde olduğunda statik kabul edilir.
Örneğin alan üzerindeCrossJoin(Product.Members, Customer.Members)Aşağıdaki ifadeler olan invariant.
1, sabit bir ifade
Product.Members.Count
Dinamik ifade
Bir ifade, her hücre için farklı bir değer olarak alan, hesaplanan giderir, dinamik olarak kabul edilir.
Örneğin alan üzerindeCrossJoin(Product.Members, Customer.Members)Aşağıdaki ifadeler olan dinamik.
- Sales, Satışlar bir ölçü değeri alanında her hücre için farklıdır.
Değişen özellik
Farklı bir öznitelik deyimi değerlendirilir ve yapar, sonra ifade bağımlı sürücü.Örneğin, ifadeCustomer.Geography.CurrentMemberCoğrafya hiyerarşisi. öznitelikleri bağlıdır
Genellikle, çeşitli öznitelikler ifadeleri değerlendirilme alanı azaltır.Aşağıdaki ifade düşünün:
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.Geographystatik 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,uniquenameher müşteri için yalnızca saat değerlendirilir ve yinelenen her değilProduct.Bu nedenle, tüm ifade alan üzerinde farklı öznitelik etkin sınırlı.
Non-değer özelliklerinde ifadeleri kullanımı bir hücre
hücre değeri olmayan özelliğinin değeri atamak için kullanılan herhangi bir MDX ifade performans artışı yarar.Performansı aynı düzeyde kalırSQL Server 2005 Analysis Services (SSAS).
Kullanım dışı listelenen İşlevler
MDX kodunuzda bu belgede listelenen herhangi bir işlev kullanımını beklenen performans kazancı ürünün bu sürüm yararlı.Bkz:Functions with enhanced performanceBu belge.
Hücre güvenlik kullanımı
Bir MDX değerlendirme ifade hücreye tanımlı bir alan üzerinde güvenlik kodunuzu performansın sağlamasını önler.
Aşağıdaki tabloda hücre güvenlik ve performans arasındaki ilişki gösterilmektedir.
Hücre güvenlik |
Beklenen performans |
---|---|
None |
En iyi |
Okuma |
Orta |
Okuma Contingent |
En düşük |
Bkz:küme Hücre için veri izinleri MDX ifadeleri kullanmaveHücre veri için özel erişim verme
Dinamik Dimensionality kullanımı
MDX kodunuzu dinamik dimensionality ifadelerin kullanımını kodunuzu performansın sağlamasını önler.Örneğin, ifade aşağıdaki gibiSum( IIF( Sales > 10000, h1.Members, h2.Members))kod olarak toplamının üyelerinin değiştirmekte olduğundan yararlıSalesifadesi hesaplandı.Başka bir örnek olduğu takvim yılı karşı üye veya üye paralel bir süre karşılığı olan bir karşılaştırma yapmak için hesap özniteliğinin geçerli üyenin ait olduğu bir öznitelik bağlı olan mali yıl hiyerarşileri arasında gerek bir senaryo olabilir.Bu senaryo için gereken MDX ifadesi aşağıdaki örnek kodu benzer olacaktır.
ParallelPeriod(Iif( Account.CurrentMember.Properties("UsesFiscalCalendar")="Y", FiscalTime, CalendarTime).CurrentMember)
Boyutlar geçerli dinamik olarak değiştirmek, üye hesabını boyut değişiklikleri.
Dinamik Parametreler kullanımı
Dinamik Parametreler MDX kodunuzda kullanımını kodunuzu performansın sağlamasını önler.Örneğin, bir ifade gibiKpiGoal("Sales_" & [Fiscal Year].currentmember.UniqueName)ifade değişir, sonra da hesaplanır, tersine, hücreleri üzerindeKpiGoal("Sales_" & Cstr(Year(Now)))olan invariant.
Important Note: |
---|
Durum olabilir, ifadeKpiGoal("Sales_" & [Fiscal Year].currentmember.UniqueName)olur aynı değer alanı üzerinden hesaplanan inç olduğuAncak, beklenen performans artışı sağlamak alt yapısı için yeterli olmaz. |
Dinamik üyelik başvuruları
Tüm dinamik üye başvuru MDX kodunuzda kullanımı kodunuzu performansın sağlamasını önler.Örneğin, aşağıdaki ifade
(IIF( e, mbr1, mbr2), Sales)
kadar elde edilen tanımlama grubu bilmek bir yolu yokturIIF()ifade Yürütme saat. sonucuAncak, aşağıdaki eşdeğer ifade
IIF( e, (mbr1, Sales), (mbr1, Sales))
sonuçta ortaya çıkan dizilerini birini ifade değerlendirme önce bilinene.
Planın ipuçları
Planın ipuçları MDX dili deyimleri değerlendirmek için alt yapısında değişiklik gösteren uzantısı.Bu sürümündeAnalysis Services, planın ipuçları üzerinde IIF(,,) sunulan işlev yalnızca.
Planın ipuçları gösterilen MDX ifade veya sunucu yapılandırma özelliklerini genel olarak yapılandırılmış.
IIF() fonksiyonlarda planın ipuçları
IIF(,,) ', aşağıdaki sözdizimini kullanarak ifadeleri ipuçları belirtilir:
IIF(<cond>, <expr>, <expr>) [HINT <hints>]
<expr> ::= <expr> [HINT <hints>]
<hints> ::= <hint> [<hints>]
<hint> ::= EAGER | STRICT | LAZY
EAGER tüm IIF subspace değerlendirilecek ifade neden olur.
STRICT, yalnızca elde edilen subspace koşul ifadesi sonuçlar uyarınca değerlendirilecek ifade neden olur.
Bir hücrenin hücre modunda değerlendirilecek ifade LAZY olur.
İSTEKLİ ve KATI İpucu dışlar; bunlar aynı IIF(,,) üzerinde farklı ifadeler kullanılabilir.
Bir sözdizimi örneği:
IIF([Measures].[Internet Sales Amount]=0
, {([Date].[Calendar Year].CURRENTMEMBER, [Customer].[Country].[All Customers])} HINT EAGER
, {{[Date].[Calendar Year].CURRENTMEMBER} * [Customer].[Country].[Country].MEMBERS} STRICT LAZY
)
Planın ipuçları yapılandırma özellikleri
Aşağıdaki yapılandırma özellikleri, ipuçları, plan OLAP\Query yolda desteklemek için sunulan:
Özellik adı |
Kabul edilebilir değerler |
Açıklama |
IIFThenMode |
0 | 1 | 2 |
0, Hayır İpucu (varsayılan) 1, EAGER 2 KATI |
IIFElseMode |
0 | 1 | 2 |
0, Hayır İpucu (varsayılan) 1, EAGER 2 KATI |
LazyEnabled |
0 | 1 |
0, Devre dışı (varsayılan) 1, Etkin |
Kullanıcı tanımlı Stored Procedures (COM veya .NET)
Kullanıcı tanımlı saklı yordamlar MDX kodunuzda kullanımını kodunuzu performansın sağlamasını önler.
Not
SQL Server 2008 Analysis Services (SSAS) en iyi duruma getirilmiş saklı yordamlar için performans geliştirmeleri sağlar.
Adlandırılmış kümeleri veya diğer ad ad küme parametrelerini kullanımı
Anda herhangi bir adlandırılmış küme veya küme diğer işlevler de birinci parametre olarak kullanıldığındaSum,Min,Max,Avg, orAggregateMDX kodunuzda kodunuzu değil yararlı performans geliştirmeleri.
Örneğin, aşağıdaki MDX ifadesi sayar ne kadar sahip birden fazla alt.
Sum(h.members as S, Iif(S.Current.Children.Count > 1, 1, 0))
Çünküh.membersgibi diğer olanSve geçerli işlevi değeri daha sonra diğer alınan küme, elde gelen performans beklenen gelişme engel olur.
Bu durum, bir başka yaygın örnek aşağıdaki kodda gösterilmiştir.
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 toplama ifadeleri de geç bağlama kullanımı
Hesaplanan üye özel toplama ifade başvurduğu saat, yürütme saat değerlendirilir diğer MDX ifadesi özel toplama ifade performansın engeller.
Komut dosyaları, İleri başvuru kullanımı
Oluşturduğunuz her saat İleri tanım başvuruları, ayrı tablolarda MDX kodunuzu, kodunuzu performans artışı yararlanabilirsiniz değil.Örneğin, aşağıdaki MDX komut dosyası kod ileriye doğru bir başvuru sırasında e bağlı 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 e tanımı gibi aşağıdaki kod, tanım X koyun.
Create Member Y as ( Sales, [Date].[Calendar].[Month].PreviousMember);
Create Member X as Y * 2;
…
Gelişmiş performans işlevleri
skaler işlevleri
Aşağıdaki liste, skaler işlevlerin üzerinde performansın görmeyi beklediğiniz işlevleri içerir.Listedeki ilk sütun skaler işleç 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, performans, bu karşılaştırması herhangi bir gelişme değil göreceksinizSQL Server 2005 Analysis Services (SSAS).Daha fazla bilgi için bu belgenin önceki bölümlerinde bulunan kullanıcı tanımlı Stored Procedures (COM veya .NET) bakın.Hazır bilgi ya da sayısal, sabit deyimler performans artışı yararlanabilirsiniz.
Üye İşlevler
Aşağıdaki liste üye işlev üzerinde performansın görmeyi beklediğiniz 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)olası en iyi performansı ne zaman alır<String Expression>statik bir ifade.
küme işlevleri
Aşağıdaki küme işlevleri listesi üzerinde performansın görmeyi beklediğiniz işlevleri içerir.
Aggregate |
Max |
Sum |
Avg |
Min |
|
Ancak, birinci parametre sıralanan işlevleri kullanarak, aşağıdaki işlevlerin herhangi bir birleşimini kullanan bir ifade olması gerekir.
- (işleç) |
.Children |
MTD |
(<set expression>,(<set expression>, …,(<set expression>) (çapraz birleştirmek işleç) |
.Members |
PeriodsToDate |
* (çapraz birleştirmek 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 gibi statik ayarlar, beklenen performans artışı da yararlanabilirsiniz.
VBA işlevleri
Aşağıdaki liste, VBA işlevleri performansın görmek bekleyebilir işlevleri içerir.
Abs |
CLng |
Uzun |
CDate |
CStr |
Şimdi |
CDbl |
Int |
Right |
CInt |
Left |
Round |
Aşağıdaki VBA işlevleri için işlevin içinde çeşitli öznitelikleri değerlendirilir, performansın görmek bekleyebilir.
Art |
Format |
Sgn |
AscW |
GD |
Sin |
Atn |
Onaltılık |
SLN |
Cbool |
Saat |
Alan |
Cbyte |
Ipmt |
Sqr |
Ccur |
Lcase |
Str |
Cdec |
Günlük |
StrComp |
Chr |
Ltrim |
StrConv |
ChrW |
Dakika |
Dize |
Cos |
Ay |
SYD |
CSng |
Taksit sayısı |
Tan |
Cvar |
Eki |
Süreölçer |
Date |
Bölüm |
TimeSerial |
DateAdd |
Devresel ödeme |
TimeValue |
DateDiff |
PPmt |
Kesim |
DatePart |
BD |
TypeName |
DateSerial |
QBColor |
Ucase |
DateValue |
Hızı |
Val |
Günü |
RBG |
Hafta içi |
DDB |
Rnd |
Yıl |
Bkl |
Rtrim |
|
Düzeltme |
İkinci |
|