14 Oct 2015
SQL Server 2016 New features - The sys.dm_exec_session_wait_stats DMV
Καθημερινά ένας DBA ή DB developer έχει να αντιμετωπίσει αρκετούς αστάθμητους τις περισσότερες φορές παράγοντες που επηρεάζουν το performance.
Πιστέψτε με ότι αυτό είναι μια δουλεία που απαιτεί σχολαστικότητα γνώση της αρχιτεκτονικής τόσο του SQL Server όσο και της database. Για να κάνεις αυτή την δουλεία θα πρέπει να έχεις μελετήσει αρκετά και να έχεις κάνει αρκετή πρακτική εξάσκηση για την απόκτηση εμπειρίας.
02 Jan 2016
The sys.dm_exec_query_optimizer_info DMV
Θα ξεκινήσω την νέα αυτή χρονιά με ένα απλό και μικρό άρθρο αλλά που απαιτεί πολύ τριβή, διάβασμα και όρεξη να βουτήξει κανείς σε βαθιά και πολλές φορές αχαρτογράφητα ύδατα.
15 Oct 2015
SQL Server 2016 New features - The sys.dm_exec_function_stats DMV
Τα User Defined Functions (UDF) είναι γνωστά στους περισσότερους. Η χρήση τους είναι μεγάλη αλλά αρκετές φορές χρησιμοποιούνται λάθος κυρίως λόγο της άγνοιας που υπάρχει γύρω από την εκτέλεση ενός UDF και ιδιαίτερα όταν αυτό εμπλέκεται μέσα σε ένα query.
12 Oct 2011
The value of sys.dm_io_virtual_file_stats DMV
Όπως αρκετές φορές έχω αναφέρει, τρεις είναι οι παράγοντες που επηρεάζουν την λειτουργία ενός SQL Server και αυτοί είναι: Memory, CPU, I/O. Αρκετοί συνάδελφοι δηλώνουν λάτρεις των Dynamic Management Views (DMV) μεταξύ αυτών είμαι και εγώ , όμως το μυστικό σε αυτές είναι να τις χρησιμοποιείς έτσι ώστε να παίρνει από αυτές συνδυαστικά τις περισσότερες φορές τη μέγιστη δυνατή πληροφορία που αυτές μπορούν να σου σώσουν. Σε αυτό το post θα σας δείξω πως χρησιμοποιώντας μια εξ αυτών...
04 Feb 2015
What's new in the SQL Server 2014 Resource Governor
Στον SQL Server 2008 εμφανίστηκε για πρώτη φορά ο Resource Governor, όπως παρουσιάσθηκε σε αυτό το post. Το feature αυτό εξελίχθηκε στις επόμενες εκδόσεις και στον 2014 έγιναν πολύ σημαντικές και ενδιαφέρουσες προσθήκες. Με αυτές μας δώθηκε η δυνατότητα ελέγχου του ΙΟ πάνω στον φυσικό δίσκο, δίνοντας πλέον πληρέστερο έλεγχο στα resources του συστήματός μας.
07 Sep 2009
SQL Server Query for Index Recommendation
Το παρακάτω query είναι πάρα πολύ καλό!!!. Το ξαναβρήκα τυχαία μπροστά μου καθώς σκάλιζα τα διάφορα scripts που έχω στην βιβλιοθήκη μου. Αν θυμάμαι καλά, γιατί έχει περάσει καιρός, το έχει φτιάξει ένα παλικάρι από την μαμά εταιρία, νομίζω ότι είναι ο Swapnil Bajaj.
30 Jun 2009
The SQL Server Operating System (SQLOS) – Μέρος 1ο
Πριν προχωρήσω στο αντικείμενο που θέλω να παρουσιάσω θα ήθελα να περιγράψω κάποιες γνωστές έννοιες που θεωρώ ότι είναι καλό να επαναληθούν, μιας και η επανάληψη είναι η μητέρα της μάθησης όπως έλεγαν οι πρόγονοι μας. Κάθε application ( και με αυτό τον όρο συμπεριλαμβάνω και τα services ) μπορεί να εκτελεσθεί πολλές φορές. Κάθε εκτέλεση του application είναι ένα instance.
05 Jul 2009
Παρουσίαση του Activity Monitor στον SQL Server 2008
Πριν ξεκινήσω να περιγράφω το συγκεκριμένο εργαλείο, οφείλω να καταθέσω την άποψη μου γι’ αυτό. ΕΙΝΑΙ ΚΑΤΑΠΛΗΚΤΙΚΟ!!!. Όσοι έχετε ασχοληθεί από παλία με τον SQL Server, προσωπικά ασχολούμαι από την έκδοση 6.0 (1996), θα έχετε παρακολουθήσει την εξέλιξη του συγκεκριμένου εργαλείου. Σε κάθε έκδοση είχαμε κάποιες βελτιώσεις. Όμως στην έκδοση του SQL Server 2008 πιστεύω ότι έχουμε τις περισσότερες αλλά και τις σημαντικότερες βελτιώσεις.
25 Mar 2018
Manage and Monitor SQL Server instances - Monitor Current Sessions
Καθημερινά δέχομαι ερωτήματα που αφορούν θέματα απόδοσης και αυτό που έχω διαπιστώσει είναι ότι υπάρχει μια σημαντική έλλειψη γνώσης και εμπειρίας στο συγκεκριμένο θέμα.
Οι περισσότεροι ψάχνουν απεγνωσμένα στον ιστό και σε αυτόν βρίσκουν μεμονωμένες πληροφορίες που σπάνια μπορεί να τους βοηθήσουν για να εντοπίσουν αρχικά και κατόπιν να λύσουν το πρόβλημα.
11 Apr 2017
Update Statistics - sys.dm_db_stats_properties DMV
Δεν θα σταματήσω να γράφω για την σημασία που έχουν τα statistics στην επιλογή του καλύτερου execution plan ποτέ. Αρκετά μεγάλος αριθμός καθυστερήσεων σε queries οφείλεται σε αυτά και προσωπικά κρίνω απαραίτητο να υπάρχει σε όλους η συγκεκριμένη γνώση γύρω από αυτά.Στο παρελθόν έχω γράψει αρκετά άρθρα γύρω από αυτά και σήμερα επανέρχομαι με ακόμα ένα με το οποίο θέλω να ρίξω περισσότερο φως σε αυτά.
06 Oct 2015
How to know the execution percentage and completion time for a task
Καθημερινά ένας DBA εκτελεί πολλές εργασίες που μπορεί να είναι από ένα απλό backup/restore μέχρι κάποιο index rebuild/reorganize ή ένα DBCC CHECKDB.
Είναι αρκετά περίπλοκο και δύσκολο εκ των προτέρων να γνωρίζει ακριβώς πόσο χρόνο θα χρειαστούν τέτοιου είδους εργασίες για να ολοκληρωθούν. Παρόλα αυτά όμως είναι σε θέση να γνωρίζει πόσο χρόνο θα χρειαστούν μέχρι να ολοκληρωθούν εφόσον αυτές ξεκινήσουν.
13 Jun 2014
How can I find who consumed tempdb on a SQL Server instance
Δεν είναι λίγες οι φορές που σαν DBA θα έρθεις αντιμέτωπος με το φαινόμενο η tempdb να μεγαλώνει υπέρμετρα και ξαφνικά, ενώ δεν έχεις κάνει κάποιες αλλαγές ή δεν έχει βάλει κάτι να εκτελεστεί που είναι γνωστό ότι κάνει εκτεταμένη χρήση αυτής. Για να δούμε μπορούμε να βρούμε τι έχει γίνει;
26 Aug 2014
Understanding the Dedicated Administrator Connection - DAC
Κάθε SQL Server DBA έχει στην συλλογή του διάφορα εργαλεία για να κάνει την καλύτερα την ημερήσια δουλεία του. Ένα από αυτά είναι και τo Dedicated Administrator Connection (DAC). Πόσοι όμως ξέρουν τι είναι αυτό και πως πρέπει να χρησιμοποιείται;
10 Feb 2018
Monitoring CREATE INDEX Progress
Όσοι από εμάς έχουν περάσει ή είναι DBA σε μεγάλες databases καθημερινά έρχονται αντιμέτωποι με πολλά ενδιαφέροντα θέματα. Ένα από αυτά είναι η συντήρηση και η δημιουργία των indexes σε μεγάλου όγκου databases. Ειδικότερα αυτό που ένας τέτοιος DBA ζητάει είναι να γνωρίζει το progress ώστε να είναι σε θέση να εκτιμήσει την ολοκλήρωση της εργασίας.
30 Jun 2015
How to find the root blocking session
Το να έχεις locks δεν είναι κάτι κακό τουναντίον είναι απαραίτητα διότι διασφαλίζουν την ακεραιότητα των δεδομένων.
Το γιατί έχεις locks είναι κυρίως το πώς έχει γραφτεί η εφαρμογή και έχω εξηγήσει αρκετά στο SQL Night με θέμα το Concurrency in SQL Server.
09 May 2011
Tip of the Day: sys.dm_os_buffer_descriptors
Η DMV αυτή δείχνει μια γράμμη για κάθε data page η οποία είναι στην buffer cache. Με το παρακάτω script μπορείς να δεις το ποσό σε MB που έχει δεσμευτεί από τις σελίδες που υπάρχουν για κάθε βάση μέσα στην buffer cache.
30 Jul 2018
Server related DMVs in SQL Server
Πολλές φορές ένας DBA ψάχνει να βρει πληροφορίες για το configuration ενός instance. Από όσο έχω δει μέχρι τώρα οι περισσότεροι καταφεύγουν στο γραφικό περιβάλλον ίσως από ευκολία ή μήπως επειδή δεν γνωρίζουν άλλον τρόπο;
20 Oct 2019
Useful Extended Events scenarios
Είναι γνωστό, εδώ και 7 χρόνια, ότι ο SQL Server Profiler είναι σε κατάσταση απόσυρσης και ότι ο διάδοχος τους είναι τα Extended Events. Με αυτά μπορούμε να κάνουμε πολλά πράγματα που μας βοηθούν στον εντοπισμό και την επίλυση προβλημάτων.
14 Sep 2015
Monitor Connection Pooling as SQL Server DBA
Το connection pooling είναι μια cache από database connections που σκοπό έχει αυτά που είναι ελεύθερα στην cache αυτή να μπορούν να επαναχρησιμοποιηθούν κάθε φορά που κάποιος ζητάει να κάνει connect στην database.Η χρησιμότητα του connection pooling είναι αρκετά σημαντική στην εκτέλεση διαδικασιών πάνω στην database από το application καθώς με αυτό τον τρόπο γίνεται αφενός γρηγορότερη επικοινωνία αφετέρου καταναλώνονται λιγότεροι πόροι.
20 Jul 2021
SQL Server Allocation Units
Συνεχίζοντας την "κατάδυση" μας στα SQL Server internals σε αυτό το άρθρο θα ασχοληθούμε με τα Allocation Units τα οποία μπορούμε να δούμε με την χρήση της DMV sys.allocation_units.
02 Mar 2017
Show Record fields in key/value format
Δεν είναι λίγες οι φορές που θέλεις να δεις τα δεδομένα μιας εγγραφής σε αντί σε μια γραμμή σε πολλές γραμμές (μία για κάθε field) και δύο στήλες (σε μια λογική key/value).
16 Mar 2022
Exploring FETCH API CURSOR and sp_cursorfetch
Δεν είναι σπάνιες οι φορές όταν κάνουμε performance tuning investigation χρησιμοποιώντας διάφορα εργαλεία όπως Profiler, sp_whoisactive, dbcc inputbuffer να συναντάμε σαν query text είτε FETCH API CURSOR είτε exec sp_cursorfetch με κάποιες παραμέτρους. Φυσικά με αυτά δεν βγάζουμε άκρη. Για αυτό στο άρθρο αυτό θα σας εξηγήσω πως μπορείτε να βγάλετε άκρη και κυρίως να δείτε το πραγματικό query που εκτελείτε πίσω από αυτά.
26 May 2013
External and Internal Index Fragmentation
Αναμφίβολα όλοι γνωρίζουμε την αξία που έχουν οι indexes σε ένα πίνακα και την ευεργετική επίδραση τους στα queries που γίνονται σε αυτούς.Επίσης όλοι ξέρουν ότι το index fragmentation είναι ένας παράγοντας που έχει αρνητική επίδραση στην αξία των index όμως γνωρίζουν όλοι τι είναι internal και τι external fragmentation;
12 Apr 2019
The sys.dm_exec_query_stats DMV
Ένα από τα πράγματα που κάνω στην δουλειά μου είναι πηγαίνω σε πελάτες και να τους βοηθάω να λύσουν τα προβλήματα τους. Αυτό σημαίνει ότι έρχομαι αντιμέτωπος με instances που δεν γνωρίζω και πρέπει να μάθω για αυτά. Έτσι εκτελώ αρκετά scripts που έχω γράψει για να συλλέξω τις πληροφορίες που θέλω.
25 Oct 2015
Get All tables row count without using Count(*) function
Η δύναμη της συνήθειας είναι το μεγαλύτερο ναρκωτικό του μυαλού και δεν το αφήνει να σκεφτεί αποδοτικά. Αλήθεια πόσες φορές κάνουμε μηχανικά κάποια πράγματα επειδή τα έχουμε συνηθίσει στα τόσα χρόνια που κάνουμε αυτή την δουλειά ;
03 Jan 2020
Let's talk about CPU related wait types
Σε αυτό το άρθρο μου θα μιλήσω για τα ποιο σημαντικά wait types που αφορούν την CPU καθώς αυτή είναι αποτελεί ένα από τα βασικά στοιχεία που συντελούν στην απόδοση του SQL Server.
15 Feb 2018
Configuring and Mapping Connections to specific ports and processors to NUMA nodes
Είναι καθημερινή συζήτηση η ασφάλεια των δεδομένων και o διαμοιρασμός των resources στο περιβάλλον μας. Όλοι μας γνωρίζουμε και κάνουμε αρκετά για αυτά καθημερινά και πάντα ζητάμε το κάτι παραπάνω. Αυτό το κάτι παραπάνω δεν είναι ένα αλλά πολλά και ένα από τα πολλά είναι και αυτό που αναλύω στο άρθρο μου αυτό.Δεν είναι κάτι συνηθισμένο αλλά θεωρώ ότι θα αρέσει σε πολλούς. Είναι ένα άρθρο haute couture στον SQL Server.
06 Jan 2020
Let's talk about Backup related wait types
Backup/Restore δύο τόσο συνηθισμένες εργασίες που όμως γίνονται τόσα λάθη σε αυτές που πολλές φορές έχουν τραγικά αποτελέσματα. Σε αυτό το άρθρο θα ασχοληθώ με τα wait types που αφορούν τις διαδικασίες αυτές και τα οποία θα βοηθήσουν, θεωρώ, στην κατανόηση τους.
16 Apr 2019
The sys.dm_server_registry DMV
Δεν είναι λίγες οι φορές που θέλουμε για ένα SQL Server instance να δούμε πληροφορίες που αφορούν τα services, network configuration, startup trace flags, version και πολλά ακόμα και καταφεύγουμε στον SQL Configuration Manager.
03 Nov 2020
Setting Cores in Virtual Machine for SQL Server Standard Edition
Από τα πράγματα που καλούμαι συχνά να κάνω στην δουλειά μου είναι να διενεργώ SQL Health Checks στους πελάτες με σκοπό να τους βοηθάω να βελτιώσουν την απόδοση του εντοπίζοντας τα σημεία αυτά που χρειάζονται βελτίωση.
Ένα SQL Health Check περιλαμβάνει αρκετούς ελέγχους και γίνεται σε κάθε instance ξεχωριστά.
Αυτό που παρατήρησα στα τελευταία checks είναι κάτι που με οδήγησε στο να γράψω αυτό το άρθρο.
10 May 2017
Missing and Unused Indexes
Είναι γνωστό ότι οι indexes αποτελούν την κηροζίνη των queries.
Στο SQL Server από το 2005 και μετά έχω στην διάθεση μου αρκετά εργαλεία τα οποία μπορώ να χρησιμοποιήσω και τα οποία μου προτείνουν την δημιουργία indexes με σκοπό την βελτίωση του performance.
10 Jul 2021
In which pages (data or index) are my table data stored?
Η γνώση των internals στο SQL Server όπως πολλές φορές έχω αναφέρει είναι σημαντική γιατί έτσι μπορείς να σχεδιάσεις καλύτερα το database schema, να γράψεις καλύτερα queries ή διαδικασίες και φυσικά να μπορείς να κάνεις καλύτερο troubleshooting. Σε αυτό το άρθρο θα κατέβουμε για τα καλά το πάτο του βαρελιού καθώς θα κατανοήσουμε το πως ο SQL Server αντιμετωπίζει αυτά που του ζητάμε.
10 Jan 2016
Dynamic Management Functions for referencing and referenced entities
Στον SQL Server υπάρχουν διάφορα dynamic management objects, από τα οποία μπορεί κανείς να πάρει πληροφορίες για την δομή της βάσης και τις εξαρτήσεις που υπάρχουν ανάμεσα στους διάφορους πίνακες. Παρόλα αυτά πολλές φορές χρειαζόμαστε να μάθουμε και εξαρτήσεις που αφορούν SQL expressions. Την πληροφορία αυτή μπορούμε να πάρουμε από δύο dynamic management functions, την sys.dm_sql_referenced_entities και την sys.dm_sql_referencing_entities, τις οποίες θα δούμε σε αυτό το post.