Να ρωτήσω γιατί να θέλουμε να καρφώσουμε τα δεδομένα στη μνήμη? Στο 99.999% των περιπτώσεων ο SQL Server ξέρει πολύ καλύτερα από εμάς ποιες εγγραφές χρησιμοποιούνται και ποιες όχι, γιατί βλέπει πως χρησιμοποιούνται στην πραγματικότητα.
Υπάρχει κάποιο πρόβλημα performance το οποίο θέλεις να λύσεις καρφώνοντας τα δεδομένα? Ή μήπως θέλεις να "προφορτώσεις" κάποια δεδομένα ελπίζοντας ότι θα αυξηθεί η ταχύτητα?
Ο SQL Server χρησιμοποιεί όσο το δυνατόν περισσότερη από τη μνήμη του συστήματος για να φορτώσει indexes και δεδομένα, προσπαθώντας να πετύχει την καλύτερη δυνατή απόδοση για όλους τους χρήστες. "Καρφώνοντας" δεδομένα στη μνήμη, αφαιρείς αυτή τη μνήμη από άλλα δεδομένα.
Έτσι κι αλλιώς, το σημαντικότερο είναι να έχεις σωστά indexes στον πίνακα και όχι όλο τον πίνακα στη μνήμη. Μία αναζήτηση σε ένα Index (το οποίο μπορεί να είναι ήδη στη μνήμη) θα είναι γρηγορότερη από ένα table scan, ακόμα και αν αυτό είναι στη μνήμη.
Όσο για τους SSD, τί εννοείς? Δεν ισχύει κάτι διαφορετικό απ' ότι με τους άλλους σκληρούς, απλά είναι γρηγορότεροι. Αν τους έχεις σε RAID θα έχεις καλύτερη ταχύτητα. Αν έχεις σε διαφορετικούς σκληρούς το log από τα data, θα έχεις καλύτερη ταχύτητα. Αν έχεις κάποιο RAID με reduncancy δεν σε απασχολεί να χαλάσει κάποιος SSD. Ουσιαστικά ακριβώς ότι ισχύει και με τους άλλους σκληρούς.
Μήπως ρωτάς πως να αποφύγεις τη φθορά των SSD? Η φθορά προέρχεται από το γράψιμο και οι εγγραφές πάντα θα καταλήξουν στο σκληρό. Οι αναγνώσεις δεν θα προκαλέσουν πρόβλημα.
Αν θες να μειώσεις τη φθορά, θα μπορούσες να βάλεις τα log files (που έχουν το περισσότερο γράψιμο) σε ξεχωριστό σκληρό. Αν όμως αυτός δεν είναι SSD θα έχεις μείωση της απόδοσης.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos