22 Feb 2020
Let's talk about Lock related wait types
O μη σεβασμός στην αρχιτεκτονική των RDBMS και ειδικότερα σε αυτό που ονομάζεται concurrency είναι η αιτία των περισσότερων "προβλημάτων" της καθημερινότητας.
06 Jan 2020
Let's talk about Backup related wait types
Backup/Restore δύο τόσο συνηθισμένες εργασίες που όμως γίνονται τόσα λάθη σε αυτές που πολλές φορές έχουν τραγικά αποτελέσματα. Σε αυτό το άρθρο θα ασχοληθώ με τα wait types που αφορούν τις διαδικασίες αυτές και τα οποία θα βοηθήσουν, θεωρώ, στην κατανόηση τους.
03 Jan 2020
Let's talk about CPU related wait types
Σε αυτό το άρθρο μου θα μιλήσω για τα ποιο σημαντικά wait types που αφορούν την CPU καθώς αυτή είναι αποτελεί ένα από τα βασικά στοιχεία που συντελούν στην απόδοση του SQL Server.
20 Oct 2019
Useful Extended Events scenarios
Είναι γνωστό, εδώ και 7 χρόνια, ότι ο SQL Server Profiler είναι σε κατάσταση απόσυρσης και ότι ο διάδοχος τους είναι τα Extended Events. Με αυτά μπορούμε να κάνουμε πολλά πράγματα που μας βοηθούν στον εντοπισμό και την επίλυση προβλημάτων.
27 Aug 2019
Analyze Actual Execution Plan option
Δεν αποτελεί έκπληξη κάποιο query σε περιβάλλον παραγωγής να έχει πρόβλημα performance και πρέπει να ασχοληθούμε με αυτό. Έχουμε πολλές επιλογές και εργαλεία στην διάθεση μας για να επιτύχουμε αυτό.
26 Aug 2019
Get Actual Execution Plan ASAP
Δεν είναι λίγες οι φορές που έχεις ένα query που παίρνει ώρα για να εκτελεστεί καθώς επιστρέφει μεγάλο αριθμό από εγγραφές και θέλεις να δεις το actual execution plan χωρίς να σε ενδιαφέρουν τα αποτελέσματα.
21 Aug 2019
Database Mail Administration Summary
Το DBMail είναι κάτι που χρόνια έχουμε στον SQL Server και βασικό σκοπό έχει να στέλνει notifications είτε από alerts είτε από jobs. Φυσικά μπορείς να κάνεις και άλλα πράγματα αλλά δεν είναι σε καμία περίπτωση αντικαταστάτης ενός mail server.
16 Apr 2019
The sys.dm_server_registry DMV
Δεν είναι λίγες οι φορές που θέλουμε για ένα SQL Server instance να δούμε πληροφορίες που αφορούν τα services, network configuration, startup trace flags, version και πολλά ακόμα και καταφεύγουμε στον SQL Configuration Manager.
12 Apr 2019
The sys.dm_exec_query_stats DMV
Ένα από τα πράγματα που κάνω στην δουλειά μου είναι πηγαίνω σε πελάτες και να τους βοηθάω να λύσουν τα προβλήματα τους. Αυτό σημαίνει ότι έρχομαι αντιμέτωπος με instances που δεν γνωρίζω και πρέπει να μάθω για αυτά. Έτσι εκτελώ αρκετά scripts που έχω γράψει για να συλλέξω τις πληροφορίες που θέλω.
28 Nov 2018
How to find if a table has rows
Πολλές φορές όταν γράφουμε κώδικα είτε μέσα σε stored procedures είτε σε scripts να χρειάζεται να κάνουμε διάφορους ελέγχους. Ένας συνηθισμένος έλεγχος είναι να κοιτάμε αν υπάρχουν εγγραφές σε ένα πίνακα για να προχωρήσουμε στο επόμενο βήμα.
06 Oct 2018
How database files are growing?
Σε αυτό το επεισόδιο SQL Server in Greek θα θούμε πως μπορούμε να κατανοήσουμε το τρόπο με τον οποίο μεγαλώνουν τα αρχεία τις κάθε database.
09 Aug 2018
The Last Page Insert Problem
Ένα διαφορετικού τύπου άρθρο, που αντί για διάβασμα έχει video είναι ένα video blog post και αφορά ένα αρκετά ενδιαφέρον θέμα του SQL Server
30 Jul 2018
Server related DMVs in SQL Server
Πολλές φορές ένας DBA ψάχνει να βρει πληροφορίες για το configuration ενός instance. Από όσο έχω δει μέχρι τώρα οι περισσότεροι καταφεύγουν στο γραφικό περιβάλλον ίσως από ευκολία ή μήπως επειδή δεν γνωρίζουν άλλον τρόπο;
15 Jul 2018
The Plan Cache Internals and Management
Κάθε φορά που στέλνουμε ένα Transact SQL statement να εκτελεστεί σε ένα SQL Server instance είναι γνωστό ότι ένα από τα βασικά components του SQL Server Database Engine αναλαμβάνει την διαδικασία αυτή και αυτό δεν είναι άλλο από τον Query Optimizer. Αυτός αναλαμβάνει να μετατρέψει το δεδομένο T-SQL statement σε μια σειρά από logical operators οι οποίοι θα χρησιμοποιηθούν για την εκπλήρωση της εκτέλεσης του T-SQL statement. Αυτή η σειρά των logical operators είναι γνωστή σαν Query Execution Plan.
03 Apr 2018
How can I find discontinued/deprecated features?
Πρόσφατα έλαβα μια ερώτηση για το πως μπορούμε να βρούμε τα discontinued / deprecated features στο τρέχων SQL Server instance μας το οποίο θέλουμε να κάνουμε migrate σε επόμενη έκδοση.
Αρχικά θα πρέπει να επισημάνω ότι ο SQL Server είναι ίσως το μοναδικό προϊόν που έχει η Microsoft που με συνέπεια χρόνια τώρα αναφέρει σε κάθε έκδοση που βγαίνει τι δεν θα υποστηρίζεται στην επόμενη έκδοση και τι πρόκειται να μην υποστηρίζεται σε επόμενες εκδόσεις. Αυτό σημαίνει ότι μου δίνεται η δυνατότητα να προγραμματίσω με άνεση τις αλλαγές που χρειάζεται να γίνουν ώστε να έχω ομαλή μετάβαση σε επόμενη έκδοση.
25 Mar 2018
Manage and Monitor SQL Server instances - Monitor Current Sessions
Καθημερινά δέχομαι ερωτήματα που αφορούν θέματα απόδοσης και αυτό που έχω διαπιστώσει είναι ότι υπάρχει μια σημαντική έλλειψη γνώσης και εμπειρίας στο συγκεκριμένο θέμα.
Οι περισσότεροι ψάχνουν απεγνωσμένα στον ιστό και σε αυτόν βρίσκουν μεμονωμένες πληροφορίες που σπάνια μπορεί να τους βοηθήσουν για να εντοπίσουν αρχικά και κατόπιν να λύσουν το πρόβλημα.
10 Feb 2018
Monitoring CREATE INDEX Progress
Όσοι από εμάς έχουν περάσει ή είναι DBA σε μεγάλες databases καθημερινά έρχονται αντιμέτωποι με πολλά ενδιαφέροντα θέματα. Ένα από αυτά είναι η συντήρηση και η δημιουργία των indexes σε μεγάλου όγκου databases. Ειδικότερα αυτό που ένας τέτοιος DBA ζητάει είναι να γνωρίζει το progress ώστε να είναι σε θέση να εκτιμήσει την ολοκλήρωση της εργασίας.
16 Oct 2017
Find missing indexes on foreign key constraints
Τα foreign keys όπως είναι γνωστό δεν φτιάχνουν κάποιον index στο reference table. Επίσης είναι γνωστό ότι καλό (αλλά όχι πάντα απαραίτητο) να φτιάχνουμε nonclustered index στο reference table στo field(s) που εμπλέκονται στο FK constraint.
20 Aug 2017
Fast copy data from table to table
Δεν είναι σπάνιες οι φορές που χρειάζεται να μεταφερθούν δεδομένα από ένα πίνακα σε ένα άλλο οι λόγοι αρκετοί όπως table archiving, table partitioning κ.α.
Όταν οι εγγραφές είναι λίγες (<10000) ένα απλό INSERT SELECT statement είναι η εύκολη λύση με αρκετά καλό χρόνο απόκρισης και κάνεις μας δεν σκέφτεται κάτι άλλο εκτός από το να έχει όσο το δυνατό μικρότερο locking impact.Τι γίνεται όμως όταν έχεις να μεταφέρεις δεδομένα που είναι πολλά;
09 Aug 2017
Show execution progress to SSMS message tab during stored procedure execution
Σήμερα έφτιαξα μια αρκετά περίπλοκη stored procedure η οποία έκανε μια μεγάλη σε διάρκεια διαδικασία και αυτή την επικοινώνησα με συναδέλφους για να τους εξηγήσω τι ακριβώς κάνει.
Ένας συνάδελφος εντυπωσιάστηκε με το γεγονός ότι στο SSMS Message tab εμφανίζονταν διάφορα μηνύματα με τα οποία μπορούσε να ελέγξει το execution progress και φυσικά ρώτησε πως αυτό το έχω φτιάξει.
Η απάντηση είναι εξής
21 Jul 2017
What Query Cost is?
Συχνά δέχομαι την ερώτηση για το τι είναι το query cost. Η απάντηση είναι η παρακάτω
18 May 2017
Stored Procedure for rebuild or reorganize indexes in a database
Σε παλαιότερο μου άρθρο είχα φτιάξει κάποια scripts τα οποία μπορούν να χρησιμοποιηθούν για το indexes fragmentation. Σήμερα σας δίνω μια stored procedure την οποία την κάνω system procedure και μπορεί να είναι διαθέσιμη σε όλες τις databases, αλλά παίρνει και παραμέτρους για να καλυφτούν περισσότερες ανάγκες ανά περίπτωση
10 May 2017
Missing and Unused Indexes
Είναι γνωστό ότι οι indexes αποτελούν την κηροζίνη των queries.
Στο SQL Server από το 2005 και μετά έχω στην διάθεση μου αρκετά εργαλεία τα οποία μπορώ να χρησιμοποιήσω και τα οποία μου προτείνουν την δημιουργία indexes με σκοπό την βελτίωση του performance.
08 May 2017
Intra-query parallelism deadlock
Το τελευταίο καιρό ασχολούμαι με την υποδομή ενός μεγάλου πελάτη με σκοπό το optimization και φυσικά τo performance.
Μέσα στο διάστημα αυτό έχουμε κάνει αρκετές αλλαγές που οδήγησαν τα πράγματα στο σωστό δρόμο. Μια όμως από αυτές τις αλλαγές ενώ αρχικά δούλευε όπως είχε σχεδιαστεί μετά από μερικές μέρες άρχισε να εμφανίζει σε τυχαία διαστήματα συμπτώματα deadlock.
Εννοείται ότι κάτι τέτοιο δεν το αφήνεις να περάσει χωρίς να το ερευνήσεις.
02 May 2017
Investigating Deadlock issues
Έχουμε γράψει στο παρελθόν μερικά άρθρα σχετικά με το deadlocking τόσο εγώ όσο και η Φήβη με το Σωτήρη. Σε αυτά δείχνουμε διάφορους τρόπους για το πως να συλλεχθεί η πληροφορία που χρειάζεται ώστε να καταλάβουμε το πρόβλημα.Τι γίνεται όμως όταν έχεις ένα σύστημα που δουλεύει και ξαφνικά βγάζει deadlocks;
24 Apr 2017
TRY… CATCH with Extended Event
Από το SQL Server 2005 έχουμε στην διάθεση μας το TRY…CATCH με το οποίο μπορούμε να έχουμε ένα δομημένο exception handling και πραγματικά είμαστε όλοι ευχαριστημένοι με αυτό.Παρόλο που αυτό κάνει εξαιρετικά την δουλειά του και πιάνει πραγματικά όλα τα run time exceptions υπάρχει κάτι που συμβαίνει και που οι περισσότεροι πιστεύουν ότι είναι limitation σε αυτό (κατά την γνώμη μου δεν είναι).
11 Apr 2017
Update Statistics - sys.dm_db_stats_properties DMV
Δεν θα σταματήσω να γράφω για την σημασία που έχουν τα statistics στην επιλογή του καλύτερου execution plan ποτέ. Αρκετά μεγάλος αριθμός καθυστερήσεων σε queries οφείλεται σε αυτά και προσωπικά κρίνω απαραίτητο να υπάρχει σε όλους η συγκεκριμένη γνώση γύρω από αυτά.Στο παρελθόν έχω γράψει αρκετά άρθρα γύρω από αυτά και σήμερα επανέρχομαι με ακόμα ένα με το οποίο θέλω να ρίξω περισσότερο φως σε αυτά.
12 Feb 2017
Working with Hypothetical Indexes on SQL Server
Δεν είναι λίγες οι φορές που κοιτάζοντας ένα query που έχει κάποιο πρόβλημα απόδοσης διαπιστώνεις ότι η δημιουργία ενός index θα μπορούσε να λύσει το πρόβλημα αυτό και θέλεις να το δοκιμάσεις.
03 Nov 2016
When the filtered indexes saves
Η παλαιότερη και πιο συνηθισμένη ερώτηση που γίνεται είναι αυτή που αφορά το query performance. Για αυτή την ερώτηση έχουν γραφτεί εκατομμύρια γραμμές σε άρθρα και έχουν γίνει χιλιάδες παρουσιάσεις.
Συγκεκριμένη απάντηση δεν θα βρει κανείς πουθενά και είναι απόλυτα λογικό καθώς η κάθε περίπτωση είναι διαφορετική και χρειάζεται διαφορετική λύση.
Αυτό που μπορώ με σιγουριά να πω είναι ότι για να δώσει κάποιος λύση στο εκάστοτε πρόβλημα θα πρέπει να έχει γνώση των εσωτερικών δομών και αρχιτεκτονική του SQL Server πάνω από καλώς.
06 Oct 2016
Row Overflow Pages
Μου αρέσουν οι μαθητές μου να έχουν περιέργεια και ζητάνε περισσότερα για το τι συμβαίνει πίσω από την σκηνή. Αυτό είναι που με κρατάει ζωντανό στο να κάνω αυτό που κάνω. Κάποια στιγμή κατά την διάρκεια του μαθήματος η κουβέντα μας είχε φτάσει στα internals της δομή μιας database και όπως έπρεπε να γίνει έγινε αναφορά και στα row overflow pages. Αυτή τη πληροφορία θέλω να μοιραστώ στο άρθρο αυτό.
01 Sep 2016
To Shrink or Not to Shrink a database?
Μπορεί ο τίτλος στο συγκεκριμένο άρθρο μου να είναι άκρως Σαιξπηρικός αλλά αντικατοπτρίζει πλήρως την σύγχυση που υπάρχει γύρω από το αν πρέπει ή όχι να γίνεται shrink σε μια database.
Δεν είναι λίγες οι φορές που έχω κατηγορηθεί για την επιμονή μου ότι κάτι τέτοιο δεν είναι καλό να γίνεται. Δεν είναι επίσης λίγες οι φορές που στην δουλειά μου έχω αρνηθεί να κάνω κάτι τέτοιο. Όπως επίσης δεν είναι λίγες οι φορές που έχω χαρακτηριστεί απόλυτος στο συγκεκριμένο θέμα. Τέλος είναι αμέτρητες οι φορές που έχω ερωτηθεί για την άποψη μου σχετικά με αυτό.