Επιταχύνετε τον ιστότοπό σας με την προσωρινή μνήμη MySQL Query
Ένας από τους καλύτερους τρόπους για να επιταχύνετε την εφαρμογή σας είναι να ενεργοποιήσετε την προσωρινή αποθήκευση ερωτημάτων στη βάση δεδομένων σας, η οποία αποθηκεύει κρυφά τα ερωτήματα SQL στη μνήμη για σχεδόν άμεση πρόσβαση από την επόμενη σελίδα που κάνει το ίδιο αίτημα.
Ο λόγος για τον οποίο αυτή η μέθοδος είναι τόσο ισχυρή είναι ότι δεν χρειάζεται να κάνετε αλλαγές στην εφαρμογή σας στο διαδίκτυο, απλά πρέπει να θυσιάσετε λίγη μνήμη. Αυτό δεν πρόκειται να διορθώσει όλα τα προβλήματά σας, αλλά σίγουρα δεν μπορεί να βλάψει.
Σημείωση: Εάν η εφαρμογή σας ενημερώνει συχνά τους πίνακες, τότε η μνήμη cache των ερωτημάτων θα καθαρίζεται συνεχώς και δεν θα πάρετε πολλά ή κανένα όφελος από αυτό. Αυτό είναι ιδανικό για μια εφαρμογή που διαβάζει κυρίως κατά της βάσης δεδομένων, όπως ένα blog του WordPress. Αυτό επίσης δεν θα λειτουργήσει αν τρέχετε σε κοινή φιλοξενία.
Ενεργοποίηση προσωρινής αποθήκευσης με εκτέλεση διακομιστή
Το πρώτο πράγμα που θα θελήσετε να κάνετε είναι να βεβαιωθείτε ότι η εγκατάστασή σας της MySQL έχει στη διάθεσή σας την υποστήριξη προσωρινής αποθήκευσης ερωτημάτων. Οι περισσότερες διανομές κάνουν, αλλά θα πρέπει να ελέγξετε ούτως ή άλλως.
Θα θελήσετε να εκτελέσετε αυτήν την εντολή από την κονσόλα MySQL, η οποία θα σας πει εάν είναι διαθέσιμη η προσωρινή αποθήκευση ερωτημάτων.
mysql> εμφάνιση μεταβλητών όπως 'have_query_cache'; + ------------------ + ------- + | Όνομα μεταβλητής | Τιμή | + ------------------ + ------- + | have_query_cache | ΝΑΙ +------------------+-------+
Μην το συγχέετε με την έννοια ότι η προσωρινή αποθήκευση των ερωτημάτων είναι στην πραγματικότητα ενεργοποιημένη, επειδή οι περισσότεροι πάροχοι φιλοξενίας δεν πρόκειται να ενεργοποιήσουν αυτήν την προεπιλογή. Είναι περίεργο ότι η εγκατάσταση του Ubuntu Feisty είχε ήδη ενεργοποιήσει ...
Στη συνέχεια, θα πρέπει να ελέγξουμε και να δούμε αν είναι ενεργοποιημένη η προσωρινή αποθήκευση ερωτημάτων. Θα χρειαστεί να ελέγξουμε περισσότερες από μία μεταβλητές, επομένως μπορούμε να το κάνουμε ταυτόχρονα ελέγχοντας το ερώτημα μεταβλητής%
mysql> εμφάνιση μεταβλητών όπως 'query%'; + ------------------------------ + --------- + | Όνομα μεταβλητής | Τιμή | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
Εδώ είναι τα σημαντικά στοιχεία της λίστας και τι σημαίνουν:
- query_cache_size - Αυτό είναι το μέγεθος της κρυφής μνήμης σε byte. Ο ορισμός αυτής της τιμής σε 0 θα απενεργοποιήσει αποτελεσματικά την προσωρινή αποθήκευση.
- query_cache_type - Αυτή η τιμή πρέπει να είναι ενεργοποιημένη ή 1 για την ενεργοποίηση της προσωρινής αποθήκευσης ερωτημάτων από προεπιλογή.
- query_cache_limit - Αυτό είναι το ερώτημα μέγιστου μεγέθους (σε bytes) που θα αποθηκευτεί προσωρινά.
Εάν η τιμή query_cache_size έχει οριστεί σε 0 ή απλά θέλετε να την αλλάξετε, θα χρειαστεί να εκτελέσετε την ακόλουθη εντολή, έχοντας κατά νου ότι η τιμή είναι σε bytes. Για παράδειγμα, εάν θέλετε να διαθέσετε 8MB στην κρυφή μνήμη θα χρησιμοποιήσαμε 1024 * 1024 * 8 = 8388608 ως αξία.
SET GLOBAL query_cache_size = 8388608;
Ομοίως, οι άλλες επιλογές μπορούν να οριστούν με την ίδια σύνταξη:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1.
Τώρα πώς μπορούμε να πούμε εάν λειτουργεί πραγματικά; Μπορείτε να χρησιμοποιήσετε την εντολή SHOW STATUS για να τραβήξετε όλες τις μεταβλητές που ξεκινούν με το "Qc" για να ρίξετε μια ματιά στο τι συμβαίνει κάτω από την κουκούλα.
mysql> ΔΕΙΞΤΕ ΚΑΤΑΣΤΑΣΗ ΚΑΘΕ 'Qc%'; + ------------------------- + -------- + | Όνομα μεταβλητής | Τιμή | + ------------------------- + -------- + | Qcache_free_blocks | 65 |. | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 σειρές σε σύνολο (0.00 sec)
Θα παρατηρήσετε στα στατιστικά στοιχεία ότι έχω άφθονο ελεύθερη μνήμη αριστερά. Εάν ο διακομιστής σας εμφανίζει πολλά χαμηλά δαμάσκηνα, ίσως χρειαστεί να εξετάσετε την αύξηση αυτής της τιμής, αλλά δεν θα ξοδέψα πολύ μνήμη στην προσωρινή αποθήκευση ερωτημάτων για έναν διακομιστή ιστού ... πρέπει να αφήσετε διαθέσιμη τη μνήμη για apache, php, ruby ή ό, τι χρησιμοποιείτε.
Ενεργοποίηση στο αρχείο ρυθμίσεων
Αν θέλετε αυτές οι αλλαγές να επιβιώσουν με επανεκκίνηση ή επανεκκίνηση του mysql server, θα πρέπει να τις προσθέσετε στο αρχείο ρυθμίσεων /etc/mysql/my.cnf για MySQL. Σημειώστε ότι μπορεί να βρίσκεται σε διαφορετική θέση στην εγκατάσταση σας.
Ανοίξτε το αρχείο χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου στη λειτουργία sudo ή root και, στη συνέχεια, προσθέστε αυτές τις τιμές εάν δεν υπάρχουν ήδη στο αρχείο. Αν υπάρχουν, απλώς τους αποσυμπιέστε.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
Η προσωρινή αποθήκευση ερωτημάτων μπορεί να βελτιώσει σημαντικά την ταχύτητα της εφαρμογής σας στο διαδίκτυο, ειδικά εάν η εφαρμογή σας διαβάζει το μεγαλύτερο μέρος της. Παρακολουθήστε την κατάσταση χρησιμοποιώντας τις παραπάνω μεθόδους και δείτε πώς λειτουργεί με την πάροδο του χρόνου.