Πρέπει να είναι απενεργοποιημένο το αρχείο καταγραφής ερωτημάτων Mysql; Τι είναι τα "αρχεία καταγραφής διακομιστή", πώς να προβάλετε τα αρχεία καταγραφής διακομιστή. Τι είναι ένα αργό αρχείο καταγραφής ερωτημάτων στη MySQL

Το προφίλ ερωτημάτων MySQL είναι μια χρήσιμη τεχνική για την ανάλυση της συνολικής απόδοσης εφαρμογών που βασίζονται σε βάσεις δεδομένων. Κατά την ανάπτυξη μεσαίων έως μεγάλων εφαρμογών, υπάρχουν συνήθως εκατοντάδες ερωτήματα κατανεμημένα σε μια μεγάλη βάση κώδικα και η βάση δεδομένων επεξεργάζεται πολλά ερωτήματα ανά δευτερόλεπτο. Χωρίς δημιουργία προφίλ ερωτήματος, καθίσταται πολύ δύσκολο να προσδιοριστεί η τοποθεσία και τα αίτια της εμφάνισης συμφόρησηεφαρμογές. Αυτό το σεμινάριο περιγράφει μερικές χρήσιμες τεχνικές δημιουργίας προφίλ ερωτημάτων χρησιμοποιώντας τα ενσωματωμένα εργαλεία της MySQL.

MySQL αργό αρχείο καταγραφής ερωτημάτων

Το αργό αρχείο καταγραφής ερωτημάτων της MySQL (ή αργού αρχείου καταγραφής ερωτημάτων) είναι ένα αρχείο καταγραφής όπου η MySQL στέλνει αργά και δυνητικά προβληματικά ερωτήματα.

Αυτή η δυνατότητα συνοδεύεται από τη MySQL αλλά είναι απενεργοποιημένη από προεπιλογή. Η MySQL καθορίζει ποια ερωτήματα πρέπει να περιλαμβάνονται σε αυτό το αρχείο καταγραφής χρησιμοποιώντας ειδικές μεταβλητές που σας επιτρέπουν να δημιουργήσετε προφίλ του ερωτήματος με βάση τις απαιτήσεις απόδοσης της εφαρμογής. Συνήθως, ερωτήματα που χρειάζονται περισσότερο χρόνο για να επεξεργαστούν και ερωτήματα που έχουν λανθασμένα ευρετήρια εισάγονται σε αυτό το αρχείο καταγραφής.

Μεταβλητές προφίλ

Οι βασικές μεταβλητές διακομιστή για τη διαμόρφωση του αργού αρχείου καταγραφής ερωτημάτων της MySQL είναι:

slow_query_log καθολικό
slow_query_log_file καθολικό
long_query_time global/session
log_queries_not_using_indexes καθολικά
min_examined_row_limit global/session

slow_query_log – μια λογική μεταβλητή για την ενεργοποίηση ή απενεργοποίηση του αργού αρχείου καταγραφής ερωτημάτων.

slow_query_log_file – απόλυτη διαδρομή του αρχείου καταγραφής ερωτημάτων. Ο κατάλογος αρχείων πρέπει να ανήκει στον χρήστη mysqld και να έχει τα κατάλληλα δικαιώματα ανάγνωσης και εγγραφής. Ο δαίμονας mysql πιθανότατα θα ξεκινήσει ως mysql, αλλά για να είστε σίγουροι, εκτελέστε την εντολή σε ένα τερματικό Linux:

ps -ef | grep bin/mysqld | κόψτε -d" " -f1

Η έξοδος θα εμφανίσει τον τρέχοντα χρήστη και τον χρήστη mysqld.

cd /var/log
mkdir mysql
chmod 755 mysql
chown mysql:mysql mysql

  • long_query_time – χρόνος σε δευτερόλεπτα για να ελέγξετε τη διάρκεια του ερωτήματος. Εάν η τιμή είναι 5, όλα τα αιτήματα που χρειάζονται περισσότερα από 5 δευτερόλεπτα για την επεξεργασία θα καταγράφονται.
  • log_queries_not_using_indexes – Μια δυαδική τιμή που καθορίζει εάν τα ερωτήματα που δεν χρησιμοποιούν ευρετήρια θα πρέπει να καταγράφονται. Κατά την ανάλυση, τέτοια ερωτήματα είναι σημαντικά.
  • min_examined_row_limit – ορίζει τον ελάχιστο αριθμό σειρών που θα αναλυθούν. Με τιμή 1000, όλα τα ερωτήματα που αναλύουν λιγότερες από 1000 σειρές θα αγνοηθούν.

Οι μεταβλητές διακομιστή MySQL μπορούν να οριστούν στο αρχείο διαμόρφωσης MySQL ή να χρησιμοποιηθούν δυναμικά διεπαφή χρήστηή γραμμή εντολών MySQL. Εάν έχουν οριστεί μεταβλητές στο αρχείο διαμόρφωσης, θα παραμείνουν κατά την επανεκκίνηση του διακομιστή, αλλά ο διακομιστής πρέπει να επανεκκινηθεί για να τις ενεργοποιήσει. Το αρχείο διαμόρφωσης MySQL βρίσκεται συνήθως στο /etc/my.cnf ή /etc/mysql/my.cnf. Για να βρείτε το αρχείο διαμόρφωσης, πληκτρολογήστε (ίσως χρειαστεί να επεκτείνετε την αναζήτησή σας σε άλλους ριζικούς καταλόγους):

βρείτε /etc -name my.cnf
βρείτε το /usr -name my.cnf

Μόλις βρείτε το αρχείο διαμόρφωσης, προσθέστε τις απαιτούμενες μεταβλητές στην ενότητα:


….
slow-query-log = 1
slow-query-log-file = /var/log/mysql/localhost-slow.log
long_query_time = 1
log-queries-not-using-indexes

Για να τεθούν σε ισχύ οι αλλαγές, πρέπει να κάνετε επανεκκίνηση του διακομιστή. Εάν οι αλλαγές πρέπει να ενεργοποιηθούν αμέσως, ορίστε τις μεταβλητές δυναμικά:

mysql> SET GLOBAL slow_query_log = "ON";
mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log";
mysql> SET GLOBAL log_queries_not_using_indexes = "ON";
mysql> SET SESSION long_query_time = 1;
mysql> SET SESSION min_examined_row_limit = 100;

Για να ελέγξετε τις τιμές των μεταβλητών:

mysql> ΕΜΦΑΝΙΣΤΕ ΠΑΓΚΟΣΜΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ ΟΠΩΣ "slow_query_log";
mysql> ΕΜΦΑΝΙΣΗ ΜΕΤΑΒΛΗΤΕΣ ΣΥΝΕΔΡΙΑΣ ΟΠΩΣ "long_query_time"?

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

Δημιουργία ερωτήματος προφίλ

Τώρα είστε εξοικειωμένοι με τις ρυθμίσεις αργού αρχείου καταγραφής ερωτημάτων. Δοκιμάστε να δημιουργήσετε δεδομένα ερωτημάτων για δημιουργία προφίλ.

Σημείωση: Το παράδειγμα που δίνεται εδώ εκτελέστηκε σε μια παρουσία MySQL που εκτελείται χωρίς να έχουν ρυθμιστεί αργά αρχεία καταγραφής ερωτημάτων. Αυτά τα ερωτήματα δοκιμής μπορούν να εκτελεστούν μέσω GUIή γραμμή εντολών MySQL.

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

Συνδεθείτε στον διακομιστή MySQL χρησιμοποιώντας την κονσόλα ως χρήστης με δικαιώματα SUPER ADMIN. Για να ξεκινήσετε, δημιουργήστε μια δοκιμαστική βάση δεδομένων και πίνακα, προσθέστε εικονικά δεδομένα σε αυτά και ενεργοποιήστε την αργή καταγραφή ερωτημάτων.

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

$> mysql -u -p
mysql> CREATE DATABASE profile_sampling;

mysql> USE profile_sampling;


mysql> CREATE TABLE χρήστες (id TINYINT PRIMARY KEY AUTO_INCREMENT, όνομα VARCHAR(255));


mysql> INSERT INTO users (όνομα) ΤΙΜΕΣ ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie"), ("Saul" "), ("Γκουστάβο"), ("Έκτορ"), ("Μάικ");


mysql> SET GLOBAL slow_query_log = 1;


mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log";


mysql> SET GLOBAL log_queries_not_using_indexes = 1;


mysql> SET long_query_time = 10;


mysql> SET min_examined_row_limit = 0;

Τώρα έχετε μια δοκιμαστική βάση δεδομένων και έναν πίνακα με ορισμένα δεδομένα. Το αργό αρχείο καταγραφής ερωτημάτων είναι ενεργοποιημένο. Ρυθμίσαμε σκόπιμα τον χρόνο επεξεργασίας αιτήματος σε υψηλό και απενεργοποιήσαμε τον έλεγχο καταμέτρησης σειρών. Για να δείτε το αρχείο καταγραφής, πληκτρολογήστε:

cd /var/log/mysql
ls -l

Προς το παρόν, δεν θα πρέπει να υπάρχει αρχείο καταγραφής αργών αιτημάτων στο φάκελο, αφού αυτή τη στιγμήδεν υπήρξαν αιτήματα. Εάν υπάρχει ήδη ένα τέτοιο αρχείο καταγραφής, αυτό σημαίνει ότι η βάση δεδομένων έχει ήδη αντιμετωπίσει αργά ερωτήματα αφού ενεργοποιήσατε την υποστήριξη για το αργό αρχείο καταγραφής ερωτημάτων. Αυτό μπορεί να παραμορφώσει τα αποτελέσματα αυτού του παραδείγματος. Επιστρέψτε στην καρτέλα MySQL και εκτελέστε:

mysql> USE profile_sampling;
mysql> ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE id = 1;

Το ερώτημα που εκτελείται απλώς ανακτά τα δεδομένα και χρησιμοποιεί το ευρετήριο του πρώτου κλειδιού από τον πίνακα. Αυτό το ερώτημα ήταν γρήγορο και χρησιμοποιούσε ευρετήριο, επομένως δεν καταγράφεται στο αργό αρχείο καταγραφής ερωτημάτων. Επιστρέψτε στον κατάλογο και βεβαιωθείτε ότι δεν έχει δημιουργηθεί αρχείο καταγραφής ερωτημάτων. Τώρα επιστρέψτε στο παράθυρο MySQL και εκτελέστε:

mysql>

Αυτό το ερώτημα δεν χρησιμοποιεί ευρετήριο. Τώρα κάτι τέτοιο θα πρέπει να εμφανίζεται στο αρχείο καταγραφής /var/log/mysql/localhost-slow.log:

# Ώρα: 140322 13:54:58

χρήση profile_sampling.
SET timestamp=1395521698;

Ένα ακόμη παράδειγμα. Αυξήστε τον ελάχιστο αριθμό σειρών για ανάλυση και στείλτε ένα αίτημα όπως αυτό:

mysql> SET min_examined_row_limit = 100;
mysql> SELECT * FROM users WHERE name = "Walter";

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

Σημείωση: Εάν τα δεδομένα δεν έχουν προστεθεί στο αρχείο καταγραφής, πρέπει να ελέγξετε διάφορους παράγοντες. Πρώτα ελέγξτε τα δικαιώματα του καταλόγου στον οποίο δημιουργείται το αρχείο καταγραφής. Πρέπει να ανήκει στον χρήστη/ομάδα mysqld και να έχει δικαιώματα chmod 755. Στη συνέχεια, θα πρέπει να ελέγξετε εάν υπάρχουν άλλες ρυθμίσεις αργού ερωτήματος στον διακομιστή που υπερισχύουν των ρυθμίσεών σας. Επαναφέρετε τις προεπιλογές για να αφαιρέσετε όλες τις αργές μεταβλητές αιτήματος από το αρχείο ρυθμίσεων και να επανεκκινήσετε τον διακομιστή. Μπορείτε επίσης να ορίσετε δυναμικά τις καθολικές μεταβλητές στις προεπιλεγμένες τιμές τους. Εάν κάνετε αλλαγές δυναμικά, αποσυνδεθείτε και συνδεθείτε ξανά στη MySQL για να ενημερώσετε τις ρυθμίσεις.

Ανάλυση δεδομένων προφίλ ερωτημάτων

Εξετάστε τα ακόλουθα δεδομένα:

# Ώρα: 140322 13:54:58
#User@Host: root@localhost
# Query_time: 0.000303 Lock_time: 0.000090 Rows_sent: 1 Rows_examined: 10
χρήση profile_sampling.
SET timestamp=1395521698;
ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE όνομα = "Jesse";

Αυτή η καταχώρηση εμφανίζει:

  • Χρόνος εκτέλεσης ερωτήματος
  • Ποιος το έστειλε
  • Πόσος χρόνος χρειάστηκε για την επεξεργασία του αιτήματος;
  • Μήκος
  • Πόσες σειρές επιστράφηκαν
  • Πόσες σειρές αναλύθηκαν

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

Χρησιμοποιώντας το mysqldumpslow

Το προφίλ μπορεί να συμπεριληφθεί σε εφαρμογές που βασίζονται σε βάσεις δεδομένων για να διασφαλιστεί η μέτρια ροή δεδομένων.

Καθώς το μέγεθος του αρχείου καταγραφής μεγαλώνει, γίνεται δύσκολη η ανάλυση όλων των δεδομένων και τα προβληματικά ερωτήματα μπορούν εύκολα να χαθούν σε αυτά. Η MySQL προσφέρει ένα εργαλείο που ονομάζεται mysqldumpslow, το οποίο βοηθά στην αποφυγή αυτού του προβλήματος διαχωρίζοντας το αρχείο καταγραφής αργών ερωτημάτων. Το δυαδικό είναι συνδεδεμένο με τη MySQL (σε Linux), ώστε να μπορείτε απλά να εκτελέσετε την εντολή:

mysqldumpslow -t 5 -s στο /var/log/mysql/localhost-slow.log

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

Πλήθος: 2 Χρόνος=68,34 δευτ. (136 δευτ.) Κλείδωμα=0,00 δευτ. (0 δευτ.) Σειρές=39892974,5 (79785949), root@localhost
SELECT PL.pl_title, P.page_title
ΑΠΟ ΤΗ ΣΕΛΙΔΑ Π
Σύνδεσμοι σελίδας ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ PL
ON PL.pl_namespace = P.page_namespace
ΠΟΥ P.page_namespace = N

Η έξοδος δείχνει τα ακόλουθα δεδομένα:

  • Καταμέτρηση: πόσες φορές καταγράφηκε το αίτημα.
  • Χρόνος: μέσος και συνολικός χρόνος αιτήματος (σε παρένθεση).
  • Κλείδωμα: χρόνος κλειδώματος τραπεζιού.
  • Σειρές: Ο αριθμός των σειρών που επιστράφηκαν.

Η εντολή εξαιρεί αριθμητικές τιμές και τιμές συμβολοσειρών, επομένως τα ίδια ερωτήματα με διαφορετικές συνθήκες WHERE αντιμετωπίζονται ως ίδια. Το εργαλείο mysqldumpslow εξαλείφει την ανάγκη συνεχούς επανεξέτασης του αρχείου καταγραφής αργών ερωτημάτων, επιτρέποντάς σας να εκτελείτε τακτικά αυτόματους ελέγχους. Οι επιλογές εντολών mysqldumpslow σάς επιτρέπουν να εκτελείτε σύνθετες εκφράσεις.

Ανάλυση αιτήματος

Ένα άλλο εργαλείο δημιουργίας προφίλ που πρέπει να έχετε κατά νου είναι το Εργαλείο ανάλυσης σύνθετων ερωτημάτων. Σας επιτρέπει να εντοπίσετε προβληματικά ερωτήματα στο αργό αρχείο καταγραφής ερωτημάτων και να το εκτελέσετε στη MySQL. Πρώτα πρέπει να ενεργοποιήσετε το προφίλ και μετά να εκτελέσετε το ερώτημα:

mysql> SET SESSION προφίλ = 1;
mysql> USE profile_sampling;
mysql> SELECT * FROM users WHERE name = "Jesse";
mysql> ΕΜΦΑΝΙΣΗ ΠΡΟΦΙΛ.

Μόλις ενεργοποιηθεί το προφίλ, το SHOW PROFILES θα εμφανίσει έναν πίνακα που συσχετίζει το Query_ID με την έκφραση SQL. Βρείτε το Query_ID που αντιστοιχεί στο ερώτημα που εκτελείται και εκτελέστε το ακόλουθο ερώτημα (αντικαταστήστε το # με το Query_ID σας):

mysql> SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=#;

Η εντολή θα επιστρέψει έναν πίνακα:

SEQ ΚΑΤΑΣΤΑΣΗ ΔΙΑΡΚΕΙΑ
1 εκκίνηση 0.000046
2 έλεγχος αδειών 0.000005
3 ανοιγόμενα τραπέζια 0.000036

Το STATE είναι ένα βήμα στη διαδικασία εκτέλεσης ερωτήματος και το DURATION είναι ο χρόνος που χρειάζεται για να ολοκληρωθεί αυτό το βήμα σε δευτερόλεπτα. Δεν είναι πολύ χρήσιμο εργαλείο, αλλά μπορεί να σας βοηθήσει να προσδιορίσετε ποιο μέρος της εκτέλεσης του ερωτήματος προκαλεί τον περισσότερο λανθάνοντα χρόνο.

ΣημείωσηΣημείωση: Αυτό το εργαλείο δεν πρέπει να χρησιμοποιείται σε περιβάλλον παραγωγής.

Αργή απόδοση του αρχείου καταγραφής ερωτημάτων

Το μόνο που μένει είναι να καταλάβουμε πώς το αργό αρχείο καταγραφής ερωτημάτων επηρεάζει την απόδοση. Γενικά, είναι ασφαλές να εκτελούνται αργά αρχεία καταγραφής ερωτημάτων σε περιβάλλον παραγωγής. Ούτε η CPU ούτε το I/O θα πρέπει να επηρεαστούν. Ωστόσο, θα πρέπει να έχετε μια στρατηγική για την παρακολούθηση του μεγέθους του αρχείου καταγραφής για να διασφαλίσετε ότι το αρχείο καταγραφής δεν θα γίνει πολύ μεγάλο για το σύστημα αρχείων. Επιπλέον, όταν εκτελείτε ένα αργό αρχείο καταγραφής ερωτημάτων σε ένα περιβάλλον παραγωγής, θα πρέπει να ορίσετε το long_query_time σε 1 ή υψηλότερο.

συμπέρασμα

Ένα αργό αρχείο καταγραφής ερωτημάτων μπορεί να σας βοηθήσει να εντοπίσετε προβληματικά ερωτήματα και να αξιολογήσετε τη συνολική απόδοση των ερωτημάτων. Ταυτόχρονα, ο προγραμματιστής μπορεί να κατανοήσει λεπτομερώς πώς λειτουργεί η εφαρμογή Ερωτήματα MySQL. Το εργαλείο mysqldumpslow σάς επιτρέπει να διαχειρίζεστε αργά αρχεία καταγραφής ερωτημάτων και να τα ενσωματώνετε εύκολα στη διαδικασία ανάπτυξής σας. Εντοπίζοντας προβληματικά ερωτήματα, μπορείτε να βελτιστοποιήσετε την επεξεργασία ερωτημάτων για να βελτιώσετε την απόδοση.

Ετικέτες:

Τα αρχεία καταγραφής συμβάντων είναι το πρώτο και απλούστερο εργαλείο για τον προσδιορισμό της κατάστασης του συστήματος και τον εντοπισμό σφαλμάτων. Υπάρχουν τέσσερα κύρια αρχεία καταγραφής στη MySQL:

  • Αρχείο καταγραφής σφαλμάτων— τυπικό αρχείο καταγραφής σφαλμάτων που συλλέγεται κατά τη λειτουργία του διακομιστή (συμπεριλαμβανομένης της έναρξης και της διακοπής).
  • Δυαδικό αρχείο καταγραφής— ένα αρχείο καταγραφής όλων των εντολών τροποποίησης της βάσης δεδομένων, που απαιτούνται για αναπαραγωγή και δημιουργία αντιγράφων ασφαλείας·
  • Γενικό αρχείο καταγραφής ερωτημάτων— κύριο αρχείο καταγραφής ερωτημάτων.
  • Αργό αρχείο καταγραφής ερωτημάτων— αρχείο καταγραφής αργών αιτημάτων.

Αρχείο καταγραφής σφαλμάτων

Αυτό το αρχείο καταγραφής περιέχει όλα τα σφάλματα που εμφανίστηκαν κατά την εκτέλεση του διακομιστή, συμπεριλαμβανομένων των κρίσιμων σφαλμάτων, καθώς και των τερματισμών λειτουργίας διακομιστή, της εκκίνησης διακομιστή και των προειδοποιήσεων. Εδώ πρέπει να ξεκινήσετε σε περίπτωση αποτυχίας του συστήματος. Από προεπιλογή, όλα τα σφάλματα εξάγονται στην κονσόλα (stderr), μπορείτε επίσης να καταγράψετε σφάλματα στο syslog (προεπιλογή στο Debian) ή σε ένα ξεχωριστό αρχείο καταγραφής:

Log_error=/var/log/mysql/mysql_error.log

# Τα σφάλματα θα εγγραφούν στο mysql_error.log

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

Shell> σφάλμα 13 64 Κωδικός σφάλματος λειτουργικού συστήματος 13: Δεν επιτρέπεται η άδεια Κωδικός σφάλματος λειτουργικού συστήματος 64: Το μηχάνημα δεν είναι στο δίκτυο

# Εξηγεί την έννοια των κωδικών σφαλμάτων

Δυαδικό (γνωστό και ως δυαδικό) αρχείο καταγραφής

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

Ανάβει ως εξής:

Log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# Υποδεικνύει την τοποθεσία, τη διάρκεια ζωής και μέγιστο μέγεθοςαρχείο

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

Αρχείο καταγραφής αιτημάτων

Αυτό το αρχείο καταγραφής περιέχει όλα τα ληφθέντα ερωτήματα SQL και πληροφορίες σχετικά με τις συνδέσεις πελατών. Μπορεί να είναι χρήσιμο για ανάλυση και βελτιστοποίηση ευρετηρίου, καθώς και για τον εντοπισμό λανθασμένων ερωτημάτων:

General_log_file = /var/log/mysql/mysql.log general_log = 1

# Περιλαμβάνει το αρχείο καταγραφής και υποδεικνύει τη θέση του αρχείου

Μπορείτε επίσης να το ενεργοποιήσετε/απενεργοποιήσετε ενώ εκτελείται ο διακομιστής MySQL:

SET GLOBAL general_log = "ON"; SET GLOBAL general_log = "OFF";

# Δεν χρειάζεται να κάνετε επανεκκίνηση του διακομιστή για να τον χρησιμοποιήσετε

Αργό αρχείο καταγραφής αιτημάτων

Το αρχείο καταγραφής είναι χρήσιμο για τον εντοπισμό αργών, δηλαδή, αναποτελεσματικών ερωτημάτων. Διαβάστε περισσότερα σε αυτό το άρθρο.

Προβολή αρχείων καταγραφής

Για να προβάλετε αρχεία καταγραφής στο Debian (Ubuntu) πρέπει να εκτελέσετε:

# Ουρά καταγραφής σφαλμάτων -f /var/log/syslog #ουρά καταγραφής ερωτήματος -f /var/log/mysql/mysql.log # Καταγραφή αργών αιτημάτων tail -f /var/log/mysql/mysql-slow.log

# Εάν τα αρχεία καταγραφής δεν καθορίζονται ξεχωριστά, βρίσκονται στο /var/lib/mysql

Περιστροφή ημερολογίου

Μην ξεχάσετε να συμπιέσετε (αρχειοθέτηση, περιστροφή) τα αρχεία καταγραφής έτσι ώστε να καταλαμβάνουν λιγότερο χώρο στον διακομιστή. Για να το κάνετε αυτό, χρησιμοποιήστε το βοηθητικό πρόγραμμα logrotateμε την επεξεργασία του αρχείου διαμόρφωσης /etc/logrotate.d/mysql-server:

# - Έβαλα τα πάντα σε ένα μπλοκ και πρόσθεσα κοινόχρηστα σενάρια, έτσι ώστε η mysql να λαμβάνει # flush-logs"d μόνο μία φορά. # Διαφορετικά τα δυαδικά αρχεία καταγραφής θα αυξάνονταν αυτόματα κατά n φορές κάθε μέρα. # - Το αρχείο καταγραφής σφαλμάτων είναι ξεπερασμένο, τα μηνύματα πηγαίνουν στο syslog τώρα./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log( καθημερινή εναλλαγή 7 missingok δημιουργία 640 mysql adm συμπίεση κοινόχρηστων scripts postrotate test -x /usr/bin/mysqladmin || έξοδος 0 # Εάν αυτό αποτύχει, ελέγξτε το debian.conf! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; έπειτα # Αλήθεια δεν υπάρχει mysqld ή μάλλον λείπει ένας χρήστης debian-sys-maint; # Εάν συμβεί αυτό και δεν είναι σφάλμα, αναφέρετε ένα σφάλμα. #αν ps cax | grep -q mysqld; έπειτα if killall -q -s0 -umysql mysqld; μετά βγείτε από 1 fi άλλο $MYADMIN flush-logs fi endscript )

# Συμπιέζει και αρχειοθετεί τα απαραίτητα αρχεία καταγραφής, καθαρίζει τα αρχεία

Ημερολόγιο DDL

Η MySQL διατηρεί επίσης ένα αρχείο καταγραφής γλώσσας δεδομένων. Συλλέγει δεδομένα από λειτουργίες όπως DROP_TABLE και ALTER_TABLE. Το αρχείο καταγραφής χρησιμοποιείται για την ανάκτηση από βλάβες που συνέβησαν κατά τη διάρκεια τέτοιων λειτουργιών. Το DDL Log είναι ένα δυαδικό αρχείο και δεν προορίζεται για ανάγνωση από τον χρήστη, επομένως μην το τροποποιήσετε ή διαγράψετε.

Το πιο σημαντικό

Ενεργοποιείτε πάντα το αρχείο καταγραφής σφαλμάτων, χρησιμοποιείτε το αρχείο καταγραφής ερωτημάτων για να ελέγξετε τη σύνδεση της εφαρμογής με τη βάση δεδομένων, να ελέγχετε τα ερωτήματα και τη λειτουργία. Το αρχείο καταγραφής αργών ερωτημάτων είναι χρήσιμο για τη βελτιστοποίηση της απόδοσης της MySQL.

Εννοια

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

Τα αρχεία καταγραφής χρησιμοποιούνται από τους διαχειριστές του συστήματος για την ανάλυση των επισκεπτών, τη μελέτη των προτύπων συμπεριφοράς ορισμένων ομάδων χρηστών, καθώς και τη λήψη διαφόρων πληροφοριών σχετικά με αυτές, όπως: το πρόγραμμα περιήγησης που χρησιμοποιείται, τη διεύθυνση IP, τα δεδομένα για τη γεωγραφική θέση του πελάτη και πολλά άλλα. Εκτός από την ανάλυση, με αυτόν τον τρόπο μπορείτε να μάθετε για μη εξουσιοδοτημένη πρόσβαση στον ιστότοπο, να μάθετε με μεγαλύτερη ακρίβεια ποιος ακριβώς την έκανε και να μεταφέρετε δεδομένα σχετικά με αυτήν την υπόθεση στις αρμόδιες αρχές.

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


Αλληλουχία γεγονότων

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

1. Υποβολή αιτήματος σελίδας.Όταν εισάγετε μια διεύθυνση στη γραμμή του προγράμματος περιήγησης ή όταν ακολουθείτε έναν ενεργό σύνδεσμο ιστού, για παράδειγμα, από μια σελίδα αποτελεσμάτων μηχανής αναζήτησης, το πρόγραμμα περιήγησης αναζητά και συνδέεται με τον διακομιστή στον οποίο βρίσκεται η σελίδα και υποβάλλει αίτημα για αυτήν. Ταυτόχρονα, μεταδίδει τις ακόλουθες πληροφορίες στον διακομιστή:
- Διεύθυνση IP του υπολογιστή-πελάτη που ζητά τη σελίδα (εάν χρησιμοποιείτε διακομιστή μεσολάβησης, τη διεύθυνση IP του διακομιστή μεσολάβησής σας).
- διεύθυνση της σελίδας Διαδικτύου που ζητά ο χρήστης (διεύθυνση IP).
- την ακριβή ώρα και ημερομηνία υποβολής του αιτήματος·
- δεδομένα σχετικά με την πραγματική τοποθεσία του πελάτη (εάν χρησιμοποιείται διακομιστής μεσολάβησης, τότε η πραγματική διεύθυνση διακομιστή μεσολάβησης).
- πληροφορίες σχετικά με το πρόγραμμα περιήγησης που χρησιμοποιεί ο πελάτης (όνομα, έκδοση κ.λπ.)
- δεδομένα σχετικά με την ιστοσελίδα από την οποία μετέφερε ο πελάτης.

2. Μεταφορά των αιτούμενων στοιχείων.Τα ζητούμενα δεδομένα (ιστοσελίδα, αρχεία, cookies κ.λπ.) μεταφέρονται από τον διακομιστή στον υπολογιστή του χρήστη.

3. Γράψτε στο αρχείο καταγραφής διακομιστή.Μετά από όλα, εμφανίζεται μια καταχώρηση αρχείου καταγραφής, η οποία υποδεικνύει όλα τα δεδομένα που εμφανίστηκαν στα δύο προηγούμενα συμβάντα. Αυτές είναι όλες οι πληροφορίες που αποστέλλονται στην πρώτη παράγραφο, καθώς και πληροφορίες σχετικά με τα μεταδιδόμενα δεδομένα.

Πώς να δείτε τα αρχεία καταγραφής διακομιστή

Τα αρχεία καταγραφής αποθηκεύονται σε ένα αρχείο πρόσβαση.logανεξάρτητα από τον τύπο διακομιστή ιστού που χρησιμοποιείτε (Apache, Nginx, squid proxy κ.λπ.) Αυτό το αρχείοείναι έγγραφο κειμένου, σε κάθε γραμμή της οποίας αναγράφεται μία προσφυγή. Μορφές εγγραφής σε πρόσβαση.logαρκετά, αλλά συνδυάζεται το πιο δημοφιλές, στο οποίο η καταχώρηση έχει την ακόλουθη μορφή και σειρά:

Κωδικός: %h %l %u %t \"%r\" %>s %b \"%(Referer)i\" \"%(User-Agent)i\"
Οπου:

%h- διεύθυνση κεντρικού υπολογιστή/IP από την οποία υποβλήθηκε το αίτημα.
%t- ώρα της αίτησης προς τον διακομιστή και τη ζώνη ώρας διακομιστή.
%r- έκδοση, περιεχόμενο και τύπος αιτήματος.
%μικρό- Κωδικός κατάστασης HTTP.
%σι- τον αριθμό των byte που αποστέλλονται από τον διακομιστή.
% (Παραπομπή)- Πηγή διεύθυνσης URL του αιτήματος.
% (User-Agent)- Επικεφαλίδα HTTP, με πληροφορίες σχετικά με το αίτημα (εφαρμογή πελάτη, γλώσσα κ.λπ.)
%(Πλήθος)- το όνομα του εικονικού κεντρικού υπολογιστή στον οποίο γίνεται πρόσβαση.

Όταν τελειώσει, αυτή η γραμμή μοιάζει κάπως έτσι:

127.0.0.1 - - "GET /index.php HTTP/1..0 (συμβατό; MSIE 7.0; Windows NT 5.1)"

Η μη αυτόματη ανάγνωση αρχείων καταγραφής θα πάρει πολύ χρόνο και προσπάθεια. Επομένως, οι έμπειροι webmasters χρησιμοποιούν ειδικό λογισμικό που ονομάζεται "Log File Analyzers". Αναλύουν όλα τα δεδομένα, τα οποία είναι αρκετά δύσκολο να τα διαβάσει ο άνθρωπος, και παράγουν δομημένα δεδομένα. Πρόκειται για προγράμματα όπως: Αναλογικό, WebAnalizer, Webalizer, Awstats, Webtrends κ.λπ.Τύποι ειδικών λογισμικόαρκετά, ανάμεσά τους υπάρχουν σαν προγράμματα επί πληρωμήκαι δωρεάν. Ως εκ τούτου, είμαι σίγουρος ότι ο καθένας θα βρει κάτι που του αρέσει.

Πού να βρείτε αρχεία καταγραφής ιστότοπου

Εάν έχετε κανονική φιλοξενία, τότε πιθανότατα θα πρέπει να γράψετε στον οικοδεσπότη σας και να ζητήσετε αρχεία καταγραφής από αυτόν. Επίσης, αρκετά συχνά, μπορείτε να τα ζητήσετε μέσω του πάνελ φιλοξενίας. Διαφορετικοί οικοδεσπότες το κάνουν διαφορετικά. Για παράδειγμα, για να ζητήσετε από τον οικοδεσπότη μου, απλώς κάντε κλικ στο αρχική σελίδαπάνελ:


Εάν έχετε πρόσβαση σε φακέλους συστήματοςδιακομιστή, τότε μπορείτε να βρείτε τα αρχεία καταγραφής στο /etc/httpd/logs/access_logσε 99 περιπτώσεις από τις 100.

Σφάλμα καταγραφής σφαλμάτων error.log

Αρχείο καταγραφής σφαλμάτων- ένα αρχείο στο οποίο τηρούνται επίσης αρχεία καταγραφής. Όχι όμως επισκέπτες, αλλά σφάλματα που παρουσιάστηκαν στον διακομιστή. Όπως συμβαίνει με πρόσβαση.log, κάθε γραμμή του αρχείου είναι υπεύθυνη για ένα σφάλμα που παρουσιάστηκε. Η καταγραφή πραγματοποιείται λαμβάνοντας υπόψη πληροφορίες όπως: την ακριβή ημερομηνία και ώρα εμφάνισης του σφάλματος, τη διεύθυνση IP στην οποία εκδόθηκε το σφάλμα, τον τύπο του σφάλματος, καθώς και τον λόγο της εμφάνισής του.

συμπέρασμα

Τα αρχεία καταγραφής είναι ένα αρκετά ισχυρό και κατατοπιστικό εργαλείο για να εργαστείτε. Αλλά στις μέρες μας, αντικαθίστανται από εργαλεία όπως το Yandex.Metrica, το Google Analytics κ.λπ., κάνοντας έτσι τη ζωή μας πιο εύκολη. Ωστόσο, εάν σκοπεύετε να αναπτύξετε, να αναπτυχθείτε και να μάθετε κάτι νέο, σίγουρα σας συνιστώ να γνωρίσετε καλύτερα αυτό το θέμα.

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

Τι είναι το αργό αρχείο καταγραφής ερωτημάτων στη MySQL;

MySQL Slow Query Log - ένα αρχείο καταγραφής που επισημαίνει αργά και δυνητικά προβληματικά ερωτήματα. Η MySQL υποστηρίζει αυτή τη λειτουργία από προεπιλογή, αλλά είναι απενεργοποιημένη. Ορίζοντας ορισμένες μεταβλητές διακομιστή, μπορούμε να καθορίσουμε ποια αιτήματα μας ενδιαφέρουν. Τις περισσότερες φορές, χρειαζόμαστε ερωτήματα που απαιτούν συγκεκριμένο χρόνο για να ολοκληρωθούν ή ερωτήματα που δεν επεξεργάζονται σωστά τα ευρετήρια.

Ρύθμιση μεταβλητών προφίλ

Βασικές μεταβλητές για τη ρύθμιση του αρχείου καταγραφής ερωτημάτων:

Slow_query_log G slow_query_log_file G long_query_time G / S log_queries_not_using_indexes G min_examined_row_limit G / S

Σχόλιο: G - καθολικές μεταβλητές, S - μεταβλητές συστήματος

  • slow_query_log - boolean τιμή συμπεριλαμβανομένου του αρχείου καταγραφής
  • slow_query_log_file - απόλυτη διαδρομή προς το αρχείο καταγραφής. Ο κάτοχος του καταλόγου πρέπει να είναι χρήστης mysqld, και ο κατάλογος πρέπει να έχει τα σωστά δικαιώματα ανάγνωσης και εγγραφής. Τις περισσότερες φορές ο δαίμονας mysql εκτελείται ως χρήστης mysql.

Για έλεγχο, εκτελέστε τις ακόλουθες εντολές:

Ps-ef | grep bin/mysqld | κόψτε -d" " -f1

Η έξοδος της εντολής θα σας δώσει το όνομα του τρέχοντος χρήστη και του χρήστη mysqld. Παράδειγμα ρύθμισης του καταλόγου /var/log/mysql:

Cd /var/log sudo mkdir mysql sudo chmod 755 mysql sudo chown mysql:mysql mysql

  • long_query_time - χρόνος σε δευτερόλεπτα για να ελέγξετε τη διάρκεια του ερωτήματος. Για παράδειγμα, με τιμή 5, κάθε αίτημα που διαρκεί περισσότερο από 5 δευτερόλεπτα θα καταγράφεται.
  • log_queries_not_using_indexes - boolean τιμή, επιτρέπει την αποθήκευση ερωτημάτων που δεν χρησιμοποιούν ευρετήρια. Τέτοια ερωτήματα είναι πολύ σημαντικά στην ανάλυση.
  • min_examined_row_limit - καθορίζει την ελάχιστη τιμή για τον αριθμό των σειρών δεδομένων που θα αναλυθούν. Η τιμή 1000 θα αγνοήσει ερωτήματα που επιστρέφουν λιγότερες από 1000 σειρές τιμών.

Αυτές οι μεταβλητές μπορούν να οριστούν στο αρχείο διαμόρφωσης MySQL, δυναμικά μέσω του MySQL GUI ή της γραμμής εντολών MySQL. Εάν οι μεταβλητές καθορίζονται στο αρχείο διαμόρφωσης, ο διακομιστής θα τις εγκαταστήσει την επόμενη φορά που θα ξεκινήσει. Συνήθως αυτό το αρχείο βρίσκεται στο /etc, /usr, /etc/my.cnf ή /etc/mysql/my.cnf. Ακολουθούν οι εντολές για αναζήτηση του αρχείου διαμόρφωσης (μερικές φορές θα πρέπει να επεκτείνετε την αναζήτηση σε άλλους ριζικούς καταλόγους):

Εύρεση /etc -name my.cnf βρείτε /usr -name my.cnf

Όταν βρείτε το αρχείο, προσθέστε τις απαιτούμενες μεταβλητές στην ενότητα:

; ... slow-query-log = 1 slow-query-log-file = /var/log/mysql/localhost-slow.log long_query_time = 1 log-queries-not-using-indexes ; δεν χρειάζεται νόημα εδώ

Οι αλλαγές θα τεθούν σε ισχύ μόνο την επόμενη φορά που θα ξεκινήσετε τη MySQL. Εάν χρειαστεί να αλλάξετε δυναμικά τις παραμέτρους, χρησιμοποιήστε άλλες μεθόδους για τον ορισμό μεταβλητών:

Mysql> SET GLOBAL slow_query_log = "ON"; mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log"; mysql> SET GLOBAL log_queries_not_using_indexes = "ON"; mysql> SET SESSION long_query_time = 1; mysql> SET SESSION min_examined_row_limit = 100;

Μπορείτε να ελέγξετε τις τιμές των μεταβλητών ως εξής:

Mysql> ΕΜΦΑΝΙΣΤΕ ΠΑΓΚΟΣΜΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ ΟΠΩΣ "slow_query_log"? mysql> ΕΜΦΑΝΙΣΗ ΜΕΤΑΒΛΗΤΕΣ ΣΥΝΕΔΡΙΑΣ ΟΠΩΣ "long_query_time"?

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

Το σημείωμα: Σύνταξη για δυναμική ρύθμιση παραμέτρων μέσω Εντολή SETκαι η χρήση του αρχείου διαμόρφωσης είναι ελαφρώς διαφορετική, για παράδειγμα slow_query_log / slow-query-log . Θα βρείτε μια πλήρη περιγραφή της σύνταξης στην επίσημη τεκμηρίωση του DBMS. Η μορφή Option-File χρησιμοποιείται για το αρχείο διαμόρφωσης, System Variable Name - ονόματα μεταβλητών κατά τη δυναμική ρύθμιση των τιμών.

Δημιουργία δεδομένων για προφίλ ερωτημάτων

Εξετάσαμε τα κύρια σημεία για τη ρύθμιση του προφίλ, τώρα θα δημιουργήσουμε τα ερωτήματα που μας ενδιαφέρουν. Αυτό το παράδειγμα χρησιμοποιήθηκε σε τρέξιμο Διακομιστής MySQLχωρίς προκαταρκτικές ρυθμίσεις καταγραφής. Τα δείγματα ερωτημάτων μπορούν να εκκινηθούν τόσο μέσω των εργαλείων εντολών MySQL GUI και DBMS. Κατά την παρακολούθηση του αρχείου καταγραφής αργών ερωτημάτων, είναι σύνηθες να ανοίγετε δύο παράθυρα με σύνδεση: το ένα για την εκτέλεση ερωτημάτων και το άλλο για την προβολή του αρχείου καταγραφής.

$> mysql -u -p mysql> ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ profile_sampling; mysql> USE profile_sampling; mysql> CREATE TABLE χρήστες (id TINYINT PRIMARY KEY AUTO_INCREMENT, όνομα VARCHAR(255)); mysql> INSERT INTO users (όνομα) ΤΙΜΕΣ ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie"), ("Saul" "), ("Γκουστάβο"), ("Έκτορ"), ("Μάικ"); mysql> SET GLOBAL slow_query_log = 1; mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log"; mysql> SET GLOBAL log_queries_not_using_indexes = 1; mysql> SET long_query_time = 10; mysql> SET min_examined_row_limit = 0;

Τώρα έχουμε μια βάση δεδομένων με δεδομένα δοκιμών. Ξεκινήσαμε τη δημιουργία προφίλ, αλλά εσκεμμένα ορίσαμε τον χρόνο απόκρισης και τον αριθμό των γραμμών να είναι μικρός. Για να δείτε το αρχείο καταγραφής χρησιμοποιήστε την εντολή:

Cd /var/log/mysql ls -l

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

Mysql> USE profile_sampling; mysql> ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE id = 1;

Το ερώτημά μας χρησιμοποιεί το ευρετήριο Πρωτεύοντος κλειδιού από τον πίνακα. Το αίτημα υποβλήθηκε σε επεξεργασία πολύ γρήγορα χρησιμοποιώντας το ευρετήριο, επομένως δεν πρέπει να αντικατοπτρίζεται στο αρχείο καταγραφής. Λάβετε υπόψη ότι το αρχείο καταγραφής δεν θα έπρεπε να έχει δημιουργηθεί.

Τώρα κάντε τα εξής:

Mysql> SELECT * FROM users WHERE name = "Jesse";

Εδώ δεν χρησιμοποιήσαμε ευρετήρια. Θα πρέπει τώρα να δούμε αυτό το αίτημα στο αρχείο καταγραφής:

Sudo cat /var/log/mysql/localhost-slow.log # Ώρα: 140322 13:54:58 # User@Host: root @ localhost # Query_time: 0.000303 Lock_time: 0.0000090 Rows_sent: 1 Rows_ampersling ;_examin useed SET timestamp=1395521698; ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE όνομα = "Jesse";

Ας δούμε ένα άλλο παράδειγμα. Ανυψώστε τη γραμμή στον αριθμό των γραμμών στην απάντηση και εκτελέστε το ακόλουθο ερώτημα:

Mysql> SET min_examined_row_limit = 100; mysql> SELECT * FROM users WHERE name = "Walter";

Το αίτημα δεν θα αντικατοπτρίζεται στο αρχείο καταγραφής, καθώς δεν υπερβήκαμε τις 100 γραμμές στην απάντηση στο αίτημα.

Το σημείωμα: Εάν τα δεδομένα δεν εμφανίζονται στο αρχείο καταγραφής, τότε πρώτα απ 'όλα πρέπει να λάβετε υπόψη τους ακόλουθους παράγοντες. Το πρώτο είναι τα δικαιώματα στον κατάλογο όπου είναι αποθηκευμένο το αρχείο καταγραφής. Η ομάδα και ο χρήστης πρέπει να αντιστοιχούν στον χρήστη mysqld, τα δικαιώματα πρέπει να είναι chmod 755. Δεύτερον, το προφίλ μπορεί να έχει ρυθμιστεί νωρίτερα. Καταργήστε τυχόν υπάρχουσες τιμές μεταβλητής προφίλ από το αρχείο διαμόρφωσης και επανεκκινήστε τον διακομιστή ή ορίστε τις μεταβλητές δυναμικά. Εάν χρησιμοποιήσατε τη δυναμική μέθοδο, θα βγείτε και θα συνδεθείτε ξανά στην κονσόλα MySQL.

Ανάλυση δεδομένων προφίλ ερωτημάτων

Εξετάστε το παραπάνω παράδειγμα:

# Time: 140322 13:54:58 # User@Host: root @ localhost # Query_time: 0.000303 Lock_time: 0.000090 Rows_sent: 1 Liws_examed: 10 use profile_sampling; SET timestamp=1395521698; ΕΠΙΛΟΓΗ * ΑΠΟ χρήστες WHERE όνομα = "Jesse";

Εδώ βλέπουμε:

  • Ώρα έναρξης του αιτήματος
  • Ο χρήστης που υπέβαλε το αίτημα
  • Αιτήματα ωραρίου λειτουργίας
  • Διάρκεια κλειδώματος
  • Αριθμός επιλεγμένων σειρών
  • Αριθμός γραμμών που αναλύθηκαν

Αυτά τα δεδομένα είναι πολύ χρήσιμα, αφού με τη βοήθειά τους μπορούμε να βρούμε και να εξαλείψουμε την αιτία της επιβράδυνσης του συστήματος. Επίσης, ένας προγραμματιστής ή διαχειριστής της MySQL θα μπορεί πάντα να βλέπει προβληματικά ερωτήματα και θα ήθελα να σημειώσω ότι η εύρεση τους εδώ είναι πολύ πιο γρήγορη από ό,τι μελετώντας τον κώδικα της εφαρμογής. Με τη μακροπρόθεσμη δημιουργία προφίλ, μπορείτε να παρακολουθείτε τις συνθήκες λειτουργίας σε χαμηλή ταχύτητα.

Χρησιμοποιώντας το mysqldumpslow

Το αρχείο καταγραφής καταγράφει συνεχώς δεδομένα· κατά κανόνα, γράφει πολύ περισσότερα από όσα διαβάζονται από αυτό. Στο μεγάλο μέγεθος log, η ανάγνωσή του γίνεται προβληματική. Η MySQL περιλαμβάνει ένα εργαλείο που ονομάζεται mysqldumpslow που βοηθά στη διατήρηση της ακεραιότητας του αρχείου καταγραφής. Το ίδιο το πρόγραμμα συνδυάζεται με MySQL (on Συστήματα Linux). Για να το χρησιμοποιήσετε, ακολουθήστε την απαραίτητη εντολήκαι περάστε του τη διαδρομή προς το αρχείο καταγραφής:

Sudo mysqldumpslow -t 5 -s στο /var/log/mysql/localhost-slow.log

Υπάρχει ένας αριθμός παραμέτρων που σας βοηθούν να προσαρμόσετε την έξοδο της εντολής. Στο παρακάτω παράδειγμα θα δούμε τα τελευταία πέντε αιτήματα ταξινομημένα κατά μέση διάρκεια. Ως αποτέλεσμα, η ανάγνωση του ημερολογίου γίνεται πολύ πιο βολική. (η έξοδος τροποποιήθηκε για να εμφανίσει τις πραγματικές τιμές καταγραφής):

Πλήθος: 2 Time=68,34s (136s) Lock=0,00s (0s) Rows=39892974.5 (79785949), root@localhost SELECT PL.pl_title, P.page_title ΑΠΟ ΤΗ σελίδα P ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ συνδέσμους σελίδας PL_page_namespacesp = PL. ΠΟΥ P.page_namespace = N ...

Τι βλέπουμε:

  • Πλήθος - αριθμός εμφανίσεων της αίτησης στο αρχείο καταγραφής
  • Χρόνος - μέσος όρος και συνολικός χρόνος αιτήματος
  • Κλείδωμα - Χρόνος κλειδώματος τραπεζιού
  • Σειρές - Αριθμός επιλεγμένων σειρών

Η εντολή εξαιρεί αριθμητικά και δεδομένα ερωτήματος συμβολοσειρών, που σημαίνει ότι τα ερωτήματα με τον ίδιο όρο WHERE θα θεωρούνται ίδια. Χάρη σε αυτό το εργαλείο, δεν χρειάζεται να κοιτάτε συνεχώς το αρχείο καταγραφής. Λόγω του μεγάλου αριθμού παραμέτρων εντολών, μπορείτε να ταξινομήσετε την έξοδο όπως θέλετε. Υπάρχουν επίσης εξελίξεις τρίτων με παρόμοια λειτουργικότητα, για παράδειγμα pt-query-digest.

Ανάλυση αιτήματος

Θα πρέπει να δώσετε προσοχή σε ένα άλλο εργαλείο που σας επιτρέπει να αναλύετε πολύπλοκα ερωτήματα. Τις περισσότερες φορές πρέπει να λάβετε ένα ερώτημα από το αρχείο καταγραφής και στη συνέχεια να το εκτελέσετε απευθείας στην κονσόλα MySQL. Πρώτα πρέπει να ενεργοποιήσετε το προφίλ και μετά να εκτελέσετε το ερώτημα:

Mysql> SET SESSION προφίλ = 1; mysql> USE profile_sampling; mysql> SELECT * FROM users WHERE name = "Jesse"; mysql> ΕΜΦΑΝΙΣΗ ΠΡΟΦΙΛ.

Μετά την ενεργοποίηση του προφίλ, το SHOW PROFILES θα εμφανίσει έναν πίνακα που συνδέει το Query_ID και την έκφραση SQL. Βρείτε το αντίστοιχο Query_ID και εκτελέστε το ακόλουθο ερώτημα (αντικαταστήστε το # με το Query_ID σας):

Mysql> SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=#;

Παράδειγμα εξόδου:

SEQ STATE DURATION 1 έναρξη 0,000046 2 άδειες ελέγχου 0,000005 3 πίνακες ανοίγματος 0,000036

ΚΑΤΑΣΤΑΣΗ- ένα βήμα στη διαδικασία εκτέλεσης ενός αιτήματος, ΔΙΑΡΚΕΙΑ- διάρκεια βήματος σε δευτερόλεπτα. Αυτό το εργαλείο δεν χρησιμοποιείται πολύ συχνά, αλλά μερικές φορές μπορεί να είναι εξαιρετικά χρήσιμο για τον προσδιορισμό της αιτίας της αργής απόδοσης ερωτήματος.

Αναλυτική περιγραφή των στηλών:

Αναλυτική περιγραφή των βημάτων:

Το σημείωμα: Αυτό το εργαλείο δεν πρέπει να χρησιμοποιείται σε λειτουργία παραγωγής διακομιστή, εκτός από την ανάλυση συγκεκριμένων ερωτημάτων.

Αργή απόδοση του αρχείου καταγραφής ερωτημάτων

Το τελευταίο ερώτημα είναι πώς το προφίλ επηρεάζει την απόδοση του διακομιστή στο σύνολό του. Στη λειτουργία παραγωγής του διακομιστή, μπορείτε να χρησιμοποιήσετε με ασφάλεια τέτοια καταγραφή· δεν πρέπει να επηρεάζει ούτε την CPU ούτε την είσοδο/έξοδο. Ωστόσο, αξίζει να δώσετε προσοχή στο μέγεθος του αρχείου καταγραφής· δεν πρέπει να γίνει απαγορευτικά μεγάλο. Θα ήθελα επίσης να σημειώσω εκ πείρας ότι ορίζοντας την τιμή της μεταβλητής long_query_time σε 1 δευτερόλεπτο ή υψηλότερη.

Σπουδαίος: Δεν θα πρέπει να χρησιμοποιείτε το εργαλείο δημιουργίας προφίλ - SET προφίλ = 1 - για την καταγραφή όλων των αιτημάτων, π.χ. Δεν συνιστάται η χρήση της μεταβλητής general_log στη λειτουργία προϊόντος και σε μεγάλα φορτία.

συμπέρασμα

Το προφίλ ερωτήματος μπορεί να σας βοηθήσει πολύ στην απομόνωση του προβληματικού ερωτήματος και στην αξιολόγηση της συνολικής απόδοσης. Ο προγραμματιστής μπορεί επίσης να μελετήσει πώς λειτουργούν τα ερωτήματα MySQL της εφαρμογής του. Το εργαλείο mysqldumpslow σάς βοηθά να προβάλετε και να επεξεργαστείτε αρχεία καταγραφής ερωτημάτων. Μετά τον εντοπισμό προβληματικών ερωτημάτων, το μόνο που μένει είναι να τα συντονίσετε για μέγιστη απόδοση.




Μπλουζα