16 Jul 2012
How old are the statistics of indexes in your database?
Φαντάζομαι ότι σε όλους είναι γνωστό ότι για να εκτελεστεί ένα query στον SQL Server περνάει από τον Query Optimizer. Αυτός για να παράξει το execution plan βλέπει τα index statistics. Αυτό σημαίνει ότι όσο καλύτερα ενημερωμένα είναι αυτά τόσο καλύτερα αποτελέσματα θα δώσει ο Query Optimizer. Πότε όμως αυτά έχουν ενημερωθεί τελευταία φορά;
06 May 2010
SQL Server 2008 R2 Tips
Δεν ξέρω αν είχατε την δυνατότητα να δείτε τα δύο poster που έχω φτίαξει για τις δυνατότητες του SQL Server 2008 R2. Φτιάχνοντας τα εντόπιζα πράγματα τα οποία με εντυπωσίαζαν. Αυτά που μου έκαναν περισσότερη εντύπωση ήταν δύο...
30 Mar 2012
Data Warehouse Physical Design Guide.
Αφού έχουμε σχεδιάσει λογικά και σύμφωνα με τις επιχειρησιακές απαιτήσεις το DW μας, φτάνει η στιγμή που πρέπει να το κάνουμε πραγματικότητα υλοποιώντας το φυσικά. Όπως έχω αναφέρει σε όλα τα προηγούμενα post αυτής της σειράς θα πρέπει φυσικά να υλοποιήσω το DW λαμβάνοντας σοβαρά υπόψη μου τους εξής παράγοντες που δεν είναι άλλοι από τους performance, scalability, manageability. Με αυτούς σαν πυξίδα θα πρέπει να Tips for Database Files...
06 Jan 2019
Cosmos DB Indexes
Όπως σε όλες τις relational databases έτσι και στην Cosmos DB οι indexes έχουν κυρίαρχη θέση καθώς είναι η κηροζίνη των ερωτημάτων και πρέπει να γνωρίζουμε για αυτούς.
09 May 2016
Why each database must have more than one data file?
Σε κάθε άνθρωπο που ασχολείται με τον SQL Server είναι γνωστό ότι μια database αποτελείται αρχικά από δύο αρχεία. Το ένα είναι το primary data file και είναι αυτό που έχει το .mdf extension και το transaction log file που είναι αυτό που έχει το .ldf extension.
10 May 2017
Missing and Unused Indexes
Είναι γνωστό ότι οι indexes αποτελούν την κηροζίνη των queries.
Στο SQL Server από το 2005 και μετά έχω στην διάθεση μου αρκετά εργαλεία τα οποία μπορώ να χρησιμοποιήσω και τα οποία μου προτείνουν την δημιουργία indexes με σκοπό την βελτίωση του performance.
04 Apr 2012
Considerations on Data Transformation Phase during ETL process
Σε συνέχεια των προηγούμενων μου post που σχετίζονται με την διαδικασία ETL με την οποία μεταφέρονται τα δεδομένα από την πηγή στο DW στα οποία είδαμε τι πρέπει να προσέξουμε στην φάση extract και στην χρήση της staging area, έφτασε η στιγμή να μιλήσουμε για την φάση του data transformation. Η φάση αυτή είναι ίσως η δυσκολότερη σε σχέση με τις άλλες και μάλιστα απαιτεί και περισσότερο χρόνο ανάπτυξης.
07 Oct 2009
Μια μικρή βουτία στα άδυτα της αρχιτεκτονικής μιας βάσης
Ίσως όσα θα αναφερθούν παρακάτω να είναι γνωστά, και το post αυτό να μην είναι ενδιαφέρον. Όμως έχω την υποχρέωση να τα αναφέρω ξανά γιατί θεωρώ ότι είναι πράγματα στα οποία δεν δίνουμε ιδιαίτερη σημασία και τα οποία όταν διογκώνονται είναι δύσκολα στην επίλυση τους. Θα μιλήσουμε εδώ γιa την αρχιτεκτονική μιας database στον SQL Server, από τι αποτελείτε μια database, πιο είναι το ιδανικό αρχικό μέγεθος δημιουργίας της, τι πολιτική να ορίσω για το growth της.
14 Jul 2012
Database Data File Special Pages
Διαβάζοντας διάφορα άρθρα διαπίστωσα ότι έχω πολύ καιρό να γράψω κάτι για τα internals του SQL Server και αυτό γιατί σε αρκετά από αυτά είδα ότι για να γίνουν κατανοητά θα πρέπει να έχουν εξηγηθεί κάποια internal objects και ειδικά pages. Με αφορμή αυτό αποφάσισα να γράψω το post αυτό και να αναφερθώ σε όλα αυτά το special pages.
26 May 2013
External and Internal Index Fragmentation
Αναμφίβολα όλοι γνωρίζουμε την αξία που έχουν οι indexes σε ένα πίνακα και την ευεργετική επίδραση τους στα queries που γίνονται σε αυτούς.Επίσης όλοι ξέρουν ότι το index fragmentation είναι ένας παράγοντας που έχει αρνητική επίδραση στην αξία των index όμως γνωρίζουν όλοι τι είναι internal και τι external fragmentation;
17 Jul 2012
DBCC EXTENTINFO – Another undocumented/documented useful dbcc command
Αρκετές φορές έχω αναφέρει κατά την διάρκεια των μαθημάτων και των παρουσιάσεων που κάνω για την αρχιτεκτονική μιας βάσης, ότι τα data files χωρίζονται σε σελίδες των 8K, κάθε 8 τέτοιες σελίδες αποτελούν ένα extent και ότι υπάρχουν δύο είδη extent τα uniform και τα mixed...
12 Feb 2017
Working with Hypothetical Indexes on SQL Server
Δεν είναι λίγες οι φορές που κοιτάζοντας ένα query που έχει κάποιο πρόβλημα απόδοσης διαπιστώνεις ότι η δημιουργία ενός index θα μπορούσε να λύσει το πρόβλημα αυτό και θέλεις να το δοκιμάσεις.
21 Jun 2013
Doing Magic with Partitioning and ColumnStore Index in a Data Warehouse DB on SQL Server 2012
Αρκετοί με ρωτάνε στα μαθήματα που κάνω αλλά και με emails στο SQL School σχετικά με το θέμα του table partitioning. Δεν ξέρω γιατί αλλά πολλούς έχει προβληματίσει και μπορώ να πω ότι έχει αγχώσει, αν και δεν θα έπρεπε καθώς είναι μια καθαρή λύση.
Υπάρχουν και συνάδελφοι που ασχολούνται με BI και έχουν Data Warehouses (DW) στα οποία θέλουν να επωφεληθούν από το table partitioning αλλά και από την χρήση των columnstore indexes.
Αποφάσισα να σας φτιάξω ένα μικρό demo με το οποίο θα δείτε ότι το να κάνει κάποιος table partitioning δεν είναι κάτι δύσκολο.
06 Mar 2012
MVP Summit 2012 Summary
Έχοντας πλέον επιστρέψει από ένα εξαιρετικό MVP Summit αυτό του 2012 θα ήθελα να μοιραστώ μαζί σας την εμπειρία μου αυτή. Ξεκινώντας την Καθαρά Δευτέρα για το ταξίδι αυτό και έχοντας τις εμπειρίες μου από το προηγούμενο summit που είχα παρακολουθήσει το 2010 γνώριζα καλά τι με περιμένει. Αλλά αυτό το summit ήταν πραγματικό εξαιρετικό ιδιαίτερα για τους MVPs του SQL Server. Ήταν πολύ παραπάνω από τις προσδοκίες μου...
16 Jun 2014
Unique Indexes Vs Filter Indexes
Σε ένα προϊόν σαν τον SQL Server που είναι περίπλοκο και περιέχει αρκετή περιπτωσιολογία είναι φυσικό όσοι ασχολούνται περιστασιακά ή επιφανειακά μαζί του να μπερδεύουν κάποια πράγματα και να βγάζουν λάθος συμπεράσματα. Σε αυτή την περίπτωση καλό θα είναι να μπαίνουν όλα σε μια σειρά.
19 Aug 2021
sp_indexdetails – Get index details and internals
Από τα θέματα που είναι σημαντικά και φυσικά έχουν απασχολήσει και θα συνεχίσουν να πράττουν αυτό είναι οι indexes και τα statistics αυτών. Αρκετός είναι επίσης και ο χρόνος που δαπανάμε για κάνουμε monitoring και optimizing αυτούς χρησιμοποιώντας τα εργαλεία όπως τα DMVs/DMFs.
15 Nov 2015
The TRUNCATE TABLE statement
Σε αυτό το post θα μιλήσουμε για το TRUNCATE TABLE statement, τις χρήσεις του και τις διαφορές του με το DELETE statement.
18 Jun 2014
Database Design Counts
Δεν είναι σπάνιο το φαινόμενο να πέφτω πάνω σε databases που έχουν σχεδιαστεί στην κυριολεξία στο πόδι. Σε πολλές από αυτές, άλλοτε εύκολα, άλλοτε με σχετικά μη επώδυνο τρόπο, κατάφερα να αλλάξω τον σχεδιασμό τους. Υπάρχουν όμως αρκετές που αυτό δεν ήταν εφικτό.
Το μήνυμα που θέλω να περάσω μέσα από το post αυτό είναι ότι πρέπει να επενδύουμε χρόνο στον σχεδιασμό της database, ακόμα και αν γνωρίζουμε ότι δεν πρόκειται να έχουμε μεγάλο όγκο δεδομένων, καθώς έτσι θα δημιουργήσουμε μια συνήθεια που δύσκολα θα κοπεί με αποτέλεσμα να έχουμε σωστά σχεδιασμένες databases.
09 Nov 2011
SQL Server 2012 – Editions and Licensing Changes
Πριν μερικές μέρες ανακοινώθηκαν από την Microsoft οι πρώτες αλλαγές που αφορούν τις εκδόσεις και τις άδειες χρήσης του προϊόντος. Οφείλω να ομολογήσω ότι ποτέ δεν ήμουν από αυτούς που ασχολούνταν με το θέμα των αδειών, θα μπορούσα να πω ότι ήμουν και είμαι αλλεργικός με το θέμα αυτό. Όμως είδα ότι κάτι πάει να αλλάξει στο θέμα αυτό και μάλιστα προς το καλύτερο.
11 Jul 2015
Scripts for rebuild or reorganize indexes in a database
Επανέρχομαι σε ένα αρχέγονο ερώτημα απαντώντας με ένα πρακτικό τρόπο σε σχέση με το πώς έχω απαντήσει στο παρελθόν.
Ο λόγος δεν είναι για να αναθεωρήσω αυτά που έχω ήδη πει αλλά για να ενισχύσω αυτά με πρακτικό τρόπο καθώς έχω καταλάβει ότι το πρόβλημα είναι στην εφαρμογή τους.
23 Jan 2010
What a DBA must know for query performance in SQL Server
Θα επανέλθω στο συγκεκριμένο θέμα μετά από απαίτηση συναδέλφων που είδαν την παρουσίαση που έχω κάνει για το 34ο dotNetZone Event και την οποία θα βρείτε εδώ. Υπήρχαν κάποιες απορίες και ερωτήσεις που φιλοδοξώ να τις απαντήσω με το παρόν post μου. Ας πάρουμε λοιπόν τα πράγματα από την αρχή μιας και διακαείς πόθος όλων μας είναι να έχουμε την τέλεια απόδοση στα queries μας δηλαδή όλα να εκτελούνται σε χρόνο μηδέν και να επιστρέφουν δισεκατομμύρια εγγραφές (καλά πλάκα κάνω :D).
19 Mar 2014
Understanding Index External Fragmentation - Part I (The cases)
Είμαι σίγουρος ότι έχετε ακούσει ουκ ολίγες φορές ότι μια από τις αιτίες που μπορεί να μειώνει την απόδοση των queries μας σε μια database είναι το index fragmentation (εφόσον βέβαια έχουμε σωστούς indexes και σωστά στατιστικά για αυτούς και φυσικά έχουμε γράψει queries που έχουν where clause) και ότι τo χειρότερο είναι το external fragmentation.
02 Jul 2016
Database Page Internals
Κάτι για το οποίο καθημερινά μάχομαι είναι το να μάθει ο καθένας που ασχολείται με τον SQL Server τα βασικά που αφορούν την εσωτερική αρχιτεκτονική του SQL Server και της κάθε database.
Για όλους εμάς που ασχολούμαστε με τον SQL Server η συγκεκριμένη γνώση είναι απαραίτητη καθώς μας βοηθάει στο να κατανοήσουμε τι ακριβώς συμβαίνει σε κάθε δύσκολη στιγμή που μπορεί να συμβεί.
Η κατοχή της συγκεκριμένης γνώσης είναι αυτή που προσδίδει σε αυτόν που την έχει την διαφοροποίηση σε σχέση με όσους λένε ότι γνωρίζουν ή ασχολούνται με τον SQL Server καθώς είναι μακράν καλύτερος τους σε θέματα αντιμετώπισης προβλημάτων και σχεδιασμού των databases.
15 Feb 2015
Memory Configuration in Analysis Services
Μέσα από το SQLschool.gr έχω αρκετές φορές επισημάνει το πώς πρέπει να ορίζουμε την μνήμη ενός instance. Αυτό που μέχρι τώρα δεν είχα κάνει είναι να αναφερθώ στο πως ορίζουμε την μνήμη ενός Analysis services instance.
17 Jul 2013
How a SELECT COUNT(*) query executed
Χθες κατά την διάρκεια του μαθήματος που έκανα ένα αγαπητός συνάδελφος στην συζήτηση που είχαμε ανέφερε ότι όποτε κάνεις ένα query που κάνει COUNT(*) στα δεδομένα μας κάνει πάντα table scan.
05 Jul 2011
DBCC IND
Αν και η συγκεκριμένη εντολή είναι ευρέως γνωστή και σίγουρα θα την έχετε βρει σε διάφορα sites εντούτοις θα γράψω και εγώ για αυτή καθώς θεωρώ ότι είναι μια σημαντική εντολή αν και είναι undocumented.
25 Oct 2018
Scripting Full Text Search Indexes
Σε αυτό το επεισόδιο ασχολούμαστε στο πως μπορούμε να δημιουργήσουμε τα create scripts για τουs full text indexes και μόνο.
11 Apr 2017
Update Statistics - sys.dm_db_stats_properties DMV
Δεν θα σταματήσω να γράφω για την σημασία που έχουν τα statistics στην επιλογή του καλύτερου execution plan ποτέ. Αρκετά μεγάλος αριθμός καθυστερήσεων σε queries οφείλεται σε αυτά και προσωπικά κρίνω απαραίτητο να υπάρχει σε όλους η συγκεκριμένη γνώση γύρω από αυτά.Στο παρελθόν έχω γράψει αρκετά άρθρα γύρω από αυτά και σήμερα επανέρχομαι με ακόμα ένα με το οποίο θέλω να ρίξω περισσότερο φως σε αυτά.
15 Oct 2015
SQL Server 2016 New features - The sys.dm_exec_function_stats DMV
Τα User Defined Functions (UDF) είναι γνωστά στους περισσότερους. Η χρήση τους είναι μεγάλη αλλά αρκετές φορές χρησιμοποιούνται λάθος κυρίως λόγο της άγνοιας που υπάρχει γύρω από την εκτέλεση ενός UDF και ιδιαίτερα όταν αυτό εμπλέκεται μέσα σε ένα query.
03 Nov 2016
When the filtered indexes saves
Η παλαιότερη και πιο συνηθισμένη ερώτηση που γίνεται είναι αυτή που αφορά το query performance. Για αυτή την ερώτηση έχουν γραφτεί εκατομμύρια γραμμές σε άρθρα και έχουν γίνει χιλιάδες παρουσιάσεις.
Συγκεκριμένη απάντηση δεν θα βρει κανείς πουθενά και είναι απόλυτα λογικό καθώς η κάθε περίπτωση είναι διαφορετική και χρειάζεται διαφορετική λύση.
Αυτό που μπορώ με σιγουριά να πω είναι ότι για να δώσει κάποιος λύση στο εκάστοτε πρόβλημα θα πρέπει να έχει γνώση των εσωτερικών δομών και αρχιτεκτονική του SQL Server πάνω από καλώς.
31 May 2017
Statistics and Index Internals
Στην παρουσίαση αυτή εξηγούμε την σημασία των στατιστικών και πως αυτά επιρεάζουν το performance των queries καθώς επίσης και το πως πρέπει να φτιάξω τους κατάλληλους indexes
29 Dec 2018
Cosmos DB a NoSQL Database
Η Cosmos DB είναι ένα high-scalable, reliable και secure infrastructure που μπορεί να χρησιμοποιηθεί για την υλοποίηση των περισσότερων γνωστών και κοινών NoSQL database.
10 Feb 2018
Monitoring CREATE INDEX Progress
Όσοι από εμάς έχουν περάσει ή είναι DBA σε μεγάλες databases καθημερινά έρχονται αντιμέτωποι με πολλά ενδιαφέροντα θέματα. Ένα από αυτά είναι η συντήρηση και η δημιουργία των indexes σε μεγάλου όγκου databases. Ειδικότερα αυτό που ένας τέτοιος DBA ζητάει είναι να γνωρίζει το progress ώστε να είναι σε θέση να εκτιμήσει την ολοκλήρωση της εργασίας.
28 Oct 2014
Do not forget to update index statistics
Είναι πρωινό της 27/10/2014. Κάνει κρύο για τα δικά μου δεδομένα και είμαι στο γραφείο στην δουλειά μου. Χτυπάει το τηλέφωνο και είναι ο Σοφοκλής. (TRUE STORY)
16 Oct 2017
Find missing indexes on foreign key constraints
Τα foreign keys όπως είναι γνωστό δεν φτιάχνουν κάποιον index στο reference table. Επίσης είναι γνωστό ότι καλό (αλλά όχι πάντα απαραίτητο) να φτιάχνουμε nonclustered index στο reference table στo field(s) που εμπλέκονται στο FK constraint.