d a x / m d x q u e r y a n a ly s is s e r v ic e s 2 0 1 2...q u e r y s q l q u e r y p r o c e s...

47

Upload: others

Post on 29-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 2: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

Page 3: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Analysis Services 2012Tabular Model

In-Memory ModeVertiPaq Storage

QueryStorage

Engine Query

DAX / MDX query

DirectQuery Mode External Data Sources

Query SQL Query

Process = Read Data from External Sources

Page 4: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

o

Page 5: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Page 6: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Page 7: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

ID Name Address City State Bal Due

1 Bob … … … 3,000

2 Sue … … … 500

3 Ann … … … 1,700

4 Jim … … … 1,500

5 Liz … … … 0

6 Dave … … … 9,000

7 Sue … … … 1,010

8 Bob … … … 50

9 Jim … … … 1,300

1 Bob … … … 3,000

2 Sue … … … 500

3 Ann … … … 1,700

4 Jim … … … 1,500

5 Liz … … … 0

6 Dave … … … 9,000

7 Sue … … … 1,010

8 Bob … … … 50

9 Jim … … … 1,300

Nothing special here. This is the standard way database systems have been laying out tables on disk since the mid 1970s.Technically, it is called a “row store”

Nothing special here. This is the standard way database systems have been laying out tables on disk since the mid 1970s.Technically, it is called a “row store”

Customers Table

Page 8: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

ID Name Address City State Bal Due

1 Bob … … … 3,000

2 Sue … … … 500

3 Ann … … … 1,700

4 Jim … … … 1,500

5 Liz … … … 0

6 Dave … … … 9,000

7 Sue … … … 1,010

8 Bob … … … 50

9 Jim … … … 1,300

Tables are stored “column-wise” with all values from a single column stored in a single blockTables are stored “column-wise” with all values from a single column stored in a single block

Customers Table

ID

1

2

3

4

5

6

7

8

9

Name

Bob

Sue

Ann

Jim

Liz

Dave

Sue

Bob

Jim

Address

City

State

Bal Due

3,000

500

1,700

1,500

0

9,000

1,010

50

1,300

Page 9: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

o

Page 10: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Quarter

Q1

Q1

Q1

Q1

Q1

Q1

Q2

Q2

Q2

Q2

Q2

Q2

Q2

Q2

Q2

Quarter Start Count

Q1 1 310

Q2 311 290

… … …

ProdID Start Count

1 1 5

2 6 3

… … …

1 51 5

2 56 3

ProdID

1

1

1

1

1

2

2

2

1

1

1

1

1

2

2

2

Price

100

120

315

100

315

198

450

320

320

150

256

450

192

184

310

251

266

Price

100

120

315

100

315

198

450

320

320

150

256

450

192

184

310

251

266

RLE Compression applied onlywhen size of compressed datais smaller than original

RLE Compression applied onlywhen size of compressed datais smaller than original

Page 11: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

xVelocity Store

Quarter

Q1

Q1

Q1

Q1

Q2

Q2

Q2

Q3

Q3

Q3

Q3

Q4

Q4

Q4

Q4

Only 4 values.2 bits are enough torepresent it

Only 4 values.2 bits are enough torepresent it

DISTINCTDISTINCT

Q.ID Quarter

0 Q1

1 Q2

2 Q3

3 Q4

Q.ID

0

0

0

0

1

1

1

2

2

2

2

4

4

4

4

R.L.E.R.L.E.

Quarter Start Count

0 1 4

1 5 10

2 11 4

3 15 15

Page 12: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 13: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

Page 14: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 15: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s
Page 16: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Page 17: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Segment 1 + 2 Segment 3Split

Page 18: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 19: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

o

Page 20: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

Page 21: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

• Strategy: Rebuild rows before any processing takes place

• Performance limited by:

o Cost to reconstruct ALL rows

o Need to decompress data

o Poor memory bandwidth utilization

2

3

3

3

7

13

42

80

2

1

3

1

4

4

4

4

(4,1,4)

prodID

2

1

3

1

storeID

2

3

3

3

custID

7

13

42

80

price

SELECT custID, SUM(price)

FROM Sales

WHERE (prodID = 4) AND (storeID = 1)

GROUP BY custID

Construct

Where3 1314

3 8014

Project on (custID, Price)

3 13

3 80

3 93

GroupSUM

Page 22: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

(4,1,4)

prodID

2

1

3

1

storeID

2

3

3

3

custID

7

13

42

80

price

SELECT custID, SUM(price)

FROM Sales

WHERE (prodID = 4) AND (storeID = 1)

GROUP BY custID

WhereprodId = 4

WherestoreID = 1

1

1

1

1

0

1

0

1

AND

0

1

0

1

Scan and filter by position

Scan and filter by position

3

3

13

80

3 13

3 80

GroupSUM

3 93

Construct

Page 23: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 24: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 25: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

---- Returns all the DMV--select * from $system.discover_schema_rowsets

---- Discover memory usage of all objects--select * from

$system.discover_object_memory_usage

Page 26: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

---- Discover details of individual columns--select * from

$system.discover_storage_table_columns

---- Discover details of segments--select * from

$system.discover_storage_table_column_segments

Page 28: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

Page 29: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 30: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 31: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

SELECTLEFT( TransactionID, 5 )

AS TransactionHighID,SUBSTRING(

TransactionID, 6,LEN( TransactionID ) - 5

) AS TransactionLowID,Quantity,Price

FROM Fact

Page 32: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

SELECTTransactionID / 10000 AS TransactionHighID,TransactionID % 10000 AS TransactionLowID,Quantity,Price

FROM Fact

Page 33: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

Number of Columns Process Time Cores Used Disk Size

1 (original) 02:48 1 2,811 MB

2 03:21 up to 8 191 MB

3 03:49 up to 8 129 MB

4 04:01 up to 8 97 MB

8 05:32 up to 8 105 MB

Page 34: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 35: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 36: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 37: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

𝑀𝑒𝑎𝑛𝑃𝑟𝑖𝑐𝑒 = 𝑄𝑡𝑦 × 𝑃𝑟𝑖𝑐𝑒

𝑄𝑡𝑦

Page 38: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

MeanPrice :=

SUM ( [PriceMultipliedByQuantity] )/ SUM ( [OrderQuantity] )

Page 39: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

Page 40: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

Page 41: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

OrderId ProductId Quantity Price Discount SalesAmount

1 12 10 2.55 1.5 24.00

2 12 8 2.55 0.4 20.00

… … … … … …

… … … … … …

847 12 9 2.55 0.95 22.00

Page 42: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

OrderId ProductId Quantity Price Discount SalesAmount

1 12 10 2.55 1.5 24.00

2 12 8 2.55 0.4 20.00

… … … … … …

… … … … … …

847 12 9 2.55 0.95 22.00

Page 43: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

Page 44: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

o

o

o

o

o

o

Page 45: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s
Page 46: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s

#SQLBITS

Speaker Title Room

Christina E. Leo Why APPLY? Theatre

Jennifer Stirrup Advanced Data Visualisation in Reporting Services 2012 Exhibition B

Denny Cherry Optimizing SQL Server Performance in a Virtual Environment Suite 3

Christian Wade MDX vs. DAX: Currency Conversion Faceoff Suite 1

Thomas LaRock Database Design: Size Does Matter! Suite 2

Peter ter Braake SSIS 2012 logging and monitoring Suite 4

Page 47: D A X / M D X q u e r y A n a ly s is S e r v ic e s 2 0 1 2...Q u e r y S Q L Q u e r y P r o c e s s = R e a d D a t a fr o m E x t e r n a l S o u r c e s