sqlschool.gr logo

articles

Articles of SQLschool.gr Team

Sizing the Analysis Server for Tabular model correctly

Antonios Chatzipavlis
Monday 18 February 2019

Overview

Ένα SQL Server Analysis Services (SSAS) Tabular model (TM) χρησιμοποιεί το column oriented xVelocity in-memory analytics engine (το οποίο ήταν γνωστό σαν Vertipaq engine πριν την έκδοση των SSAS 2012) το οποίο προσφέρει εξαιρετική απόδοση αλλά έχει συγκεκριμένες απαιτήσεις σε storage, μνήμη και επεξεργαστική ισχύ.

Επειδή συχνά πελάτες και μαθητές μου με ρωτάνε για αυτό και από όσα έχω δει αρκετά λάθη έχουν γίνει τα οποία δυστυχώς έχουν χρηματικό κόστος αρχικά μετά ακολουθούν τα άλλα κόστη, είπα να γράψω κάποια πράγματα ώστε η κατάσταση αυτή να γίνει κάπως καλύτερη.

Η επιλογή του hardware με σκοπό να εξυπηρετήσει SSAS-TM είναι κάτι που πρέπει να γίνει με προσοχή καθώς οι απαιτήσεις που αυτό έχει είναι παντελώς διαφορετικές από τις ανάγκες που έχει ένα Multidimensional model πόσο μάλλον από τις ανάγκες που έχει ένα relational engine.

Δυστυχώς τις περισσότερες φορές η επιλογή που γίνεται είναι λάθος και αυτό έχει σοβαρές συνέπειες στην χρήση των Tabular models.

Σε όσα αναφερθούν παρακάτω υπάρχει η παραδοχή ότι σκοπός είναι να δημιουργηθεί ένα SSAS-TM server instance και μόνο χωρίς αστεράκια ή άλλες εξαιρέσεις και καλό είναι να το σκεφτούμε αυτό όταν χτίζουμε την υποδομή μας.

Storage και Ι/Ο

Ένα SSAS-TM έχει πάντα τα πάντα στην μνήμη άρα πρέπει να γίνει κατανοητό το πότε γίνεται χρήση του disk I/O.

Όταν ξεκινάει το SSAS service μόνο τα metadata των databases που είναι σε αυτό διαβάζονται από το δίσκο.

Την στιγμή όμως που σε όποια database διαβάζουμε το όποιο object της τότε όλη η database διαβάζεται από το δίσκο και φορτώνεται στην μνήμη και ποτέ πλέον δεν φεύγει από αυτή. (όταν λέω όλη εννοώ όλη χωρίς αστεράκια).

Αυτό σημαίνει ότι σε αυτή την φάση ο χρόνος που θα χρειαστεί είναι συνάρτηση το sequential I/O performance και του data transfer rate που έχει ο δίσκος.

Επίσης ακόμα μια διαδικασία που χρειάζεται να έχω disk operations είναι κάθε φορά που κάνω processing την databases όπου εδώ έχω write/read concurrent και sequential operations για κάθε αρχείο της database το οποίο γίνεται από την αρχή του μέχρι το τέλος του.

Επίσης ο δίσκος δεν έχει καμία επίδραση στα queries καθώς όλα είναι στην μνήμη.

Random I/O δεν χρησιμοποιείται στα SSAS-TMs για αυτό πρέπει να δώσετε βάση στο Sequential I/O των δίσκων. Η μόνη περίπτωση που μπορεί να έχω random I/O είναι μόνο αυτή όπου όταν κάνω process operation και δεν έχω αρκετή μνήμη και τα παλιά δεδομένα πρέπει να αντικατασταθούν από τα νέα τότε έχω paging το οποίο φυσικά είναι random I/O.

Με όλα αυτά στο μυαλό μας καταλαβαίνουμε ότι τα χρήματα μας δεν πρέπει να τα ξοδέψουμε σε storage αλλά στα επόμενα που ακολουθούν.

Memory

Η μνήμη είναι το απόλυτα σημαντικό resource για ένα SSAS-TM instance, όχι μόνο γιατί όλα τα δεδομένα είναι στην μνήμη αλλά και γιατί χρειάζεται σε αυτή να δημιουργηθούν temporary structures για να απαντηθούν περίπλοκα ερωτήματα.

Υπάρχει o ελάχιστος κανόνας για την μνήμη του 1,5X του μεγέθους των δεδομένων στο δίσκο. Με αυτόν όμως το κανόνα δεν εξασφαλίζουμε ότι δεν θα έχουμε paging κατά την διάρκεια ενός process operation.

Για αυτό αλλά και γιατί είναι αρκετά δύσκολο να κάνουμε εκτίμηση χωρίς να έχουμε κάποια δεδομένα από ένα UAT περιβάλλον για το πόση temporary memory θα χρειαστούν τα ερωτήματα των χρηστών, επιλέγουμε να έχουμε τουλάχιστον 3Χ το μέγεθος των δεδομένων στο δίσκο της εκάστοτε database.

Όπως όλα τα δάκτυλα του χεριού δεν είναι ίσια έτσι και όλες οι μνήμες δεν είναι το ίδιο. Για τα SSAS-TM το memory bandwidth είναι αρκετά σημαντικό καθώς είναι αυτό που μεταφέρει τα δεδομένα από την RAM στην CPU και για αυτό θα πρέπει να επιλεχθεί ότι καλύτερο σε ταχύτητα στην μνήμη. Η ταχύτητα της μνήμης είναι πολύ σημαντικότερη από την ταχύτητα της CPU.

CPU

Βασικό στοιχείο επιλογής CPU για τα SSAS-TM είναι η L2 cache. Όσο μεγαλύτερη τόσο καλύτερο performance έχει ο xVelocity.

Αυτό σημαίνει ότι αν πρέπει να επιλέξω μεταξύ δύο CPU επιλέγω αυτή που έχει την μεγαλύτερη L2 cache ακόμα και αν είναι χαμηλότερη σε ταχύτητα από την άλλη.

Στα άλλα SQL Server services έχουμε πει ότι η NUMA αρχιτεκτονική είναι επιθυμητή όμως τα SSAS-TM δεν είναι NUMA aware και για αυτό το λόγο θέλουμε να τρέχουν σε processors που είναι στο ίδιο NUMA και μόνο. Για αυτό αν έχουμε ένα server που τρέχουν και άλλα services που επωφελούνται από τη NUMA αρχιτεκτονική θα πρέπει να ρυθμίσουμε τα SSAS-TM να "παίζουν" με ένα NUMA.

Ακόμα ένα στοιχείο που θα πρέπει να ληφθεί υπόψη είναι ότι Hyperthreading επηρεάζει αρνητικά το xVelocity performance επειδή η L2 cache μοιράζεται μεταξύ των concurrent threads και αυτό μειώνει την απόδοση του. Είναι καλή πρακτική αν έχω ένα server ο οποίος είναι αποκλειστικά για SSAS-TM να κάνουμε disable το hyperthreading.

Conclusion

Με βάση όλα τα παραπάνω νομίζω ότι η επιλογή hardware γίνεται ευκολότερη για να εξυπηρετηθούν SSAS-TM


//antonch

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios Chatzipavlis is a highly experienced Data Solutions Consultant and Trainer. He has been working in the IT industry since 1988, holding various roles such as senior developer, IT Manager, Data & AI Solutions Architect and Consultant.

Since 1995, Antonios has focused on modern technologies and software development tools, primarily by Microsoft. He has specialized in Data & AI since 2000, with expertise in Microsoft Data Platform (SQL Server, Azure SQL Databases, Azure Synapse Analytics, Microsoft Fabric, Power BI, AI) and Databricks.

Antonios is also a Microsoft Certified Trainer (MCT) for over 25 years, has been recognized as a Microsoft Most Valuable Professional (MVP) in Data Platform since 2010 and he is in the Data Expert 40 Powerlist 2024 by Boussias. He is the co-founder and visionary behind XLYTiCA, a company dedicated to Data & AI solutions.

Episode

Task Flows in Microsoft Fabric

image

More Episodes...

Tip

Get Certified: Become a Fabric Data Engineer

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn

sqlschool.gr © 2010-2025 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.