Efficient schema changes


Σήμερα έδωσα το exam 70-431 καθώς χρειάζεται να κάνω upgrade το MCDBA certification μου. Γενικά δεν ήταν δύσκολο, ωστόσο αφορμή για αυτό το post ήταν μια ερώτηση που μου έκανε εντύπωση. Έλεγε ότι υπάρχει ένας πίνακας με προϊόντα και θέλουμε να προσθέσουμε ένα νέο πεδίο. Ποιος είναι ο ποιο efficient τρόπος για να γίνει αυτό; Και είχε τέσσερις διαφορετικές λύσεις. Αυτό που σκέφτηκα αμέσως είναι ότι αυτή η ερώτηση είναι ασαφής γιατί δεν προσδιορίζει τι μέγεθος έχει ο πίνακας. Αν έχει για παράδειγμα 1.000, 10.000 ή 1.000.000 εγγραφές.

Πέρυσι είχα αναλάβει ένα performance tuning για έναν SQL Server που είχε έναν αντίστοιχο πίνακα με προϊόντα μόνο που είχε μερικά εκατομμύρια εγγραφές. Σε τέτοιες περιπτώσεις τα queries που δοκιμάζεις στον πίνακα θέλουν προσοχή γιατί αργούν να ολοκληρωθούν. Μια αλλαγή στα indexes απαιτεί και αυτή αρκετή ώρα για να ολοκληρωθεί. Γι αυτόν τον λόγο πρέπει όλα να γίνονται προσεκτικά ώστε να μην χάνεται τσάμπα χρόνος. Το ίδιο ισχύει και όταν συμβαίνουν αλλαγές στο schema. Για παράδειγμα, μπορεί να απαιτηθεί να γίνει προσθήκη ενός πεδίου. Κάτι τέτοιο μπορεί να γίνει με πολλούς τρόπους, όπως:

  • Πεδίο NULL (με ή χωρίς DEFAULT)
  • Πεδίο NOT NULL και DEFAULT
  • Πεδίο με NULL και DEFAULT με WITH VALUES option
  • Πεδίο με NULL και DEFAULT με WITH VALUES option και με CHECK constraint

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

Το σενάριο αυτό λοιπόν, μου θύμισε όταν κατά τη διάρκεια εκείνου του performance tuning χρειάστηκε να μειώσω το μέγεθος ενός πεδίου. Ένα απλό ALTER COLUMN δεν ήταν καθόλου efficient καθώς θα κλείδωνε τον πίνακα για αρκετή ώρα μέχρι να ενημερώσει τις νέες εγγραφές. Έτσι, σκέφτηκα έναν τρόπο για να γίνει πιο efficiently η διαδικασία. Υπομονή μέχρι το επόμενο post…

Advertisements

One Comment on “Efficient schema changes”

  1. […] προηγούμενο post Efficient schema changes είχα αναφέρει το πόσο χρονοβόρα μπορεί να γίνει μια […]


Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s