+ All Categories
Home > Documents > Tuning SSAS Processing Performance

Tuning SSAS Processing Performance

Date post: 27-Sep-2015
Category:
Upload: oluwatobiadewale
View: 247 times
Download: 2 times
Share this document with a friend
Description:
SSAS
Popular Tags:
24
Pragmatic Works Tuning SSAS Processing Performance
Transcript
  • Pragmatic Works

    Tuning SSAS Processing Performance

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Agenda

    Processing Overview

    Tuning Process

    Bottlenecks Bandages

    Surgery

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    About Me

    John Welch, SQL Server MVP, SSAS Maestro 2008 Coauthor on

    SQL Server MVP Deep Dives Smart Business Intelligence Solutions with Microsoft SQL

    Server 2008

    Working with SQL Server since 1996 My Contact Info

    http://agilebi.com/jwelch Twitter: @john_welch Email: [email protected]

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Dimension Processing

    Build Attribute Stores

    Build Hierarchy Stores

    Build Decoding Stores

    Build Bitmask Indexes

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Attribute Processing

    Customer

    City

    Region

    Country

    GenderIncome

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Hierarchy Processing

    Hierarchy stores accelerate access to dimension hierarchy members

    Hierarchies process in parallel

    Ordering members in the hierarchy can be time consuming Disable ordering by setting

    AttributeHierarchyOrdered = FALSE

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Decoding Stores

    Decoding tables enable lookup of IDs for high level members by the ID for a lower level member

    Unlikely to present performance bottlenecks

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Build Bitmask Indexes

    Bitmask indexes help look up related attributes

    Depends on Decoding Stores

    Loads decoding stores for related attributes into memory AttributeHierarchyOptimizedState =

    NotOptimized disables the index

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Partition Processing

    Process Fact Data

    Build Aggregations &

    Indexes

    ProcessData ProcessIndexes

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Process Data

    Read Data

    Reads from database

    Process Data

    Maps data to Dim IDs

    Aggregates data

    Write Data

    Sorts data

    Compresses and writes data

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Process Indexes

    Creates indexes and aggregations

    Loads decoding stores for all attributes related to granularity attributes Except for attributes that are NotOptimized

    Aggregations for large partitions can spill to disk Avoid where possible

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    SMART Tuning Steps

    Set Goals

    Measure

    Assess Bottlenecks

    Remove Bottleneck

    Test and Evaluate

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Performance Monitor

    MSOLAP: Processing Rows read/sec Rows written/sec

    MSOLAP: Proc Aggregations Temp File Bytes Writes/sec Rows created/Sec Current Partitions

    MSOLAP: Threads Processing pool idle threads Processing pool job queue length Processing pool busy threads

    MSOLAP: Memory Memory Limit High KB Memory Limit Low KB Memory Usage KB

    MSSQL: Memory Manager Total Server Memory Target Server Memory

    Process % Processor Time msmdsrv.exe

    and sqlservr.exe

    Logical Disk: Avg. Disk Read Queue Length Avg. Disk Write Queue Length Avg. Disk sec/Read Avg. Disk sec/Write Disk Transfers/sec

    Processor: % Processor Time Total

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    SQL Profiler

    SQL

    Performance/ Showplan XML Statistics

    Profile

    TSQL/ SQL:BatchCompleted

    Analysis Services

    Command Events

    Command Begin

    Command End

    Progress Reports

    Progress Report Begin

    Progress Report End

    Progress Report Error

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Tuning

    Run Processing in 3 steps Dimension processing

    Partition ProcessData

    Partition ProcessIndexes

    Use the most appropriate processing type

    Machine is maxed when CPU utilization = 100% Improvements past that require new hardware

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Warning!

    Change one thing at a time!

    Most of these items involve tradeoffs

    Need to understand impact of each setting

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Dimension Processing Bottlenecks

    Data retrieval Bandage: Add Indexes Surgery: Use SQL views to support dimensions

    Processing attributes Reduce the number of attributes Add attribute relationships AttributeHierarchyOptimizedState = Not Optimized

    for attributes related to key with high cardinality Use Member Properties

    AttributeHierarchyEnabled = False

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Partition ProcessData Bottlenecks

    Data Retrieval Bandages

    Add Indexes Use Compression Add lock hints (TABLOCK) Add database connections

    Surgery Align relational and analytical partitions 1:1 Update data types Evaluate database server I/O and network

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Partition ProcessData Bottlenecks

    CPU underutilized

    Bandages Processing pool job queue length > 0

    If Processing pool idle threads = 0, increase Threadpool\Process\MaxThreads

    If Processing pool idle threads > 0, decrease CoordinatorExecutionMode

    Surgery Increase the number of partitions

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Partiton ProcessIndexes Bottlenecks

    Not enough memory (Temp File Bytes Writes/sec > 0)

    Bandages Reduce memory usage

    Decrease parallelism

    Make sure TempDir is pointed to a fast disk

    Surgery Add physical memory

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Partiton ProcessIndexes Bottlenecks

    CPU underutilized Bandages

    If Processing pool idle threads = 0, increase Threadpool\Process\MaxThreads

    If Processing pool idle threads > 0, decrease CoordinatorExecutionMode

    Increase OLAP\Process\AggregationMemoryLimitMin

    Surgery Increase partitions

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    I/O

    Disk Queue Lengths, Avg. Reads and Writes are high

    No bandages here (other than reducing disk contention)

    Surgery: More / faster spindles

    Short-stroke the disks

    Go solid-state

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Wrap Up

    Tuning takes time

    Set clear goals initially and revisit them

    Change one thing at a time

    Document along the way

  • MAKING BUSINESS INTELLIGENT www.pragmaticworks.com

    Resources

    Analysis Services Performance Guide

    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3be0488d-e7aa-4078-a050-ae39912d2e43&DisplayLang=en

    SQLCAT http://sqlcat.com

    My Blog http://agilebi.com/jwelch

    Twitter: @john_welch


Recommended