fast and secure web hosting. from a simple website to a highly visited e-shop  

Σημαντικές μεταβλητές MySQL server

Άσχετα αν χρησιμοποιείτε έναν MySQL server ή έναν cluster από πολλούς, ένα πράμα είναι σίγουρο ανάμεσα στους χρήστες. Η βελτιστοποίηση όσο το δυνατόν περισσότερο της MySQL. Κάτι που οι developers της MySQL το γνωρίζουν και μας δίνουν μια σειρά από κατανοητές μεταβλητές που μπορεί κανείς να παρακολουθεί σε πραγματικό χρόνο, για να ελέγχει την κατάσταση και την απόδοση του MySQL server του. Αυτές οι μεταβλητές εμφανίζονται με την SHOW STATUS εντολή. Παρακάτω ακολουθούν 10 σημαντικές μεταβλητές που μας βοηθούν να εξάγουμε συμπεράσματα για την κατάσταση του MySQL server μας. 1. Threads_connected Μας δείχνει τον συνολικό αριθμό των χρηστών που συνδέονται κι έχουν ανοιχτές συνδέσεις με τον MySQL server. Μας δίνει μία ακριβή μέτρηση για το πόσοι είναι συνδεδεμένοι σε πραγματικό χρόνο και μπορεί να φανεί χρήσιμο αν θέλουμε να προγραμματίσουμε πχ κάποια επανεκίνηση του MySQL server με το μικρότερο δυνατό αντίκτυπο. 2. Created_tmp_disk_tables Δείχνει τον αριθμό των προσωρινών πινάκων που δημιουργήθηκαν στον δίσκο αντί στην μνήμη (RAM) του server μας. Η πρόσβαση σε πίνακες που έχουν δημιουργηθεί στον δίσκο είναι σε γενικές γραμμές πιο αργή από τους ίδιους πίνακες που θα ήταν φορτωμένοι στην μνήμη RAM. 3. Handler_read_first Μας λέει πόσες φορές ένας "χειριστής πίνακα" έκανε άιτηση να διαβάσει την πρώτη γραμμή ενός ευρετηρίου πίνακα. Αν η MySQL ζητάει συχνά την πρώτη γραμμή ενός ευρετηρίου πίνακα (table index), σημαίνει συνήθως ότι κάνει διαδοχική ανάγνωση ολόκληρου του ευρετηρίου. Κάτι που υποδηλώνει ότι ο συγκεκριμένος πίνακας δεν είναι σωστά ευρετηριασμένος. 4. Innodb_buffer_pool_wait_free Αυτή η μεταβλητή δείχνει πόσες φορές η MySQL αναγκάστηκε να περιμένει έως ότου αδειάσουν σελίδες από την μνήμη RAM. Αν αυτή η τιμή είναι υψηλή, σημαίνει ότι το μεμορυ buffer της MySQL δεν είναι σωστά ρυθμισμένο για τον αριθμό των εγγραφών που εκτελούνται εκείνη την στιγμή από τον MySQL server. 5. Key_reads Δείχνει πόσες φορές η MySQL χρησιμοποίησε το σύστημα των αρχείων (διάβασε από τον δίσκο) για να πάρει ευρετήρια βάσεων δεδομένων. Αυτή η συμπεριφορά κάνει την εκτέλεση των queries πιο αργή. Αν το νούμερο είναι υψηλό δείχνει ότι η key cache της MySQL είναι υπερφορτωμένη και θα πρέπει να ξαναρυθμιστεί. 6. Max_used_connections Μας δείχνει τον μέγιστο αριθμό συνδέσεων που είχε ταυτόχρονα ο MySQL server από την στιγμή που ξεκίνησε. Αυτή η τιμή αποτελεί ένα μέτρο σύγκρισης για να μας βοηθήσει να αποφασίσουμε τον μέγιστο αριθμό συνδέσεων που θα επιτρέπονται από τον server. Μπορεί να χρησιμοποιηθεί και σε ανάλυση επισκεψιμότητας επίσης. 7. Open_tables Μας λέει τον αριθμό των πινάκων που είναι εκείνη την στιγμή ανοιχτοί. Αυτή η μεταβλητή καλό είναι να αναλύεται η ερμηνεία της σε συνδιασμό με το μέγεθος της table cache. Αν αυτή η τιμή είναι μικρή και η τιμή table_cache είναι υψηλή, τότε είναι μάλλον ασφαλές να μειώσουμε το μέγεθος της table_cache χωρίς να έχουμε αντίκτυπο στην απόδοση. Από την άλλη αν αυτή η τιμή είναι υψηλή, κοντά στην τιμή της table_cache τότε υπάρχει ώφελος από την αύξηση της table_cache. (Θυμηθείτε: είναι ένα από τους ελέγχους που πραγματοποιεί το mysqltuner script) 8. Select_full_join Αυτή η μεταβλητή δείχνει τον αριθμό FULL JOINS που έχει πραγματοποιήσει η MySQL για να απαντήσει στα queries των χρηστών. Μια υψηλή τιμή δείχνει ότι η MySQL αναγκάζεται να εκτελεί FULL JOINS σε πίνακες κάτι που επηρρεάζει αρκετά την απόδοση, αντί να χρησιμοποιεί ευρετήρια. Καλό είναι να χρησιμοποιηθούν μεγαλύτερα ευρετήρια για τους συγκεκριμένους πίνακες. 9. Slow_queries Η μεταβλητή αυτή λέει πόσα queries πήραν παραπάνω χρόνο από το συνηθισμένο για να εκτελεστούν. Μεγάλος αριθμός slow_queries δείχνει ότι τα queries μας δεν είναι εκτελούνται με τον βέλτιστο τρόπο. Ένα αναγκαίο βήμα σε αυτήν την περίπτωση είναι να εξεταστεί το αρχείο καταγραφών των αργών queries (slow log queries) και να προσπαθήσουμε να τα βελτιστοποιήσουμε. 10. Uptime Μας λέει τον συνολικό χρόνο (σε δευτερόλεπτα) από τότε που ξεκίνησε ο Mysql server. Είναι μια χρήσιμη τιμή που μας δίνει μια γενική εικόνα, επίσης πολύ μικρό νούμερο δείχνει ότι ο MySQL server κάνει συχνά restart κάτι που θα οδηγεί σε διακοπές πρόσβασης στους χρήστες.