Share via


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