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 is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Episode

First look: SQL Database in Microsoft Fabric

image

More Episodes...

Tip

What's New in SQL Server 2022 - Episodes

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-2024 All rights reserved

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