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

Άποψη: 15232|Απάντηση: 3

[Πηγή] MySQL CPU 100% υψηλή λύση

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 11/10/2018 11:20:31 π.μ. | | | |
Ανοίξτε τη διαχείριση εργασιών διακομιστή και διαπιστώστε ότι η διαδικασία της CPU ήταν πάντα 99% και η προβολή καταλαμβάνεται από τη διαδικασία mysql, η οποία ήταν υψηλή.


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

1. Μεταβείτε στον κατάλογο mysql/bin και εισαγάγετε τη λίστα διεργασιών mysqladmin.
2. Ξεκινήστε τη mysql και εισαγάγετε την εμφάνιση λίστας διεργασιών.
Εάν έχετε άδεια SUPER, μπορείτε να δείτε όλα τα νήματα, διαφορετικά, μπορείτε να δείτε μόνο τα νήματα του λογαριασμού σας.





Το νόημα και ο σκοπός κάθε στήλης

id: Ένα αναγνωριστικό
user: εμφανίζει τον τρέχοντα χρήστη, εάν δεν είναι root, αυτή η εντολή θα εμφανίζει μόνο δηλώσεις SQL εντός των δικαιωμάτων σας.
host: δείχνει από ποια IP προέρχεται αυτή η δήλωση και από ποια θύρα
db: Εμφανίζει τη βάση δεδομένων στην οποία είναι συνδεδεμένη η διεργασία.
command: Εμφανίζει τις εντολές που εκτελούνται από την τρέχουσα σύνδεση, συνήθως αναστολή λειτουργίας, ερώτημα και σύνδεση.
time: Ο χρόνος που διαρκεί αυτή η κατάσταση, σε δευτερόλεπτα.
κατάσταση: Εμφανίζει την κατάσταση της δήλωσης sql που χρησιμοποιεί την τρέχουσα σύνδεση, αλλά μόνο μια συγκεκριμένη κατάσταση στην εκτέλεση της δήλωσης, μια δήλωση sql, έχει ερωτηθεί, για παράδειγμα, μπορεί να χρειαστεί να περάσει από την αντιγραφή στον πίνακα tmp, το αποτέλεσμα ταξινόμησης, την αποστολή δεδομένων κ.λπ
info: Εμφανίζει αυτήν τη δήλωση SQL, επειδή το μήκος είναι περιορισμένο, επομένως η μεγάλη δήλωση SQL δεν εμφανίζεται πλήρως, αλλά είναι μια σημαντική βάση για να κρίνουμε τη δήλωση προβλήματος.


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

επιλέξτε cast(count(*) as SIGNED) ως col_0_0_ από το ratedpasse0_ 'RatedPassenger', 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ όπου baseinfoco1_. CompanyId=ratedpasse0_. CompanyId και ordermatch2_. OrderId=ratedpasse0_. ΚωδΠαραγγελίας

Σκοτώνουμε τη διαδικασία αυτών των δύο δηλώσεων ερωτήματος

Αφού περίμενα 10 δευτερόλεπτα, διαπίστωσα ότι η CPU είχε πέσει πολύ, αλλά ήταν ακόμα πολύ υψηλή και θα συνεχίσω να ρωτάω τον λόγο!



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

Τέλος





Προηγούμενος:Είσοδος C# στο Wordpress
Επόμενος:Τροποποιήστε τη μέθοδο αντιστοίχισης θυρών για κοντέινερ docker
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 11/10/2018 1:03:02 μ.μ. |
Η πιο κρίσιμη από αυτήν την εντολή είναι η στήλη κατάστασης και οι καταστάσεις που αναφέρονται στη mysql είναι κυρίως οι εξής:

Πίνακας ελέγχου  
  Έλεγχος του φύλλου δεδομένων (αυτό είναι αυτόματο).  
  Πίνακες κλεισίματος  
  Τα δεδομένα που τροποποιήθηκαν στον πίνακα ξεπλένονται στο δίσκο και ο πίνακας που έχει εξαντληθεί κλείνει. Αυτή είναι μια γρήγορη λειτουργία, εάν όχι, θα πρέπει να ελέγξετε εάν ο χώρος στο δίσκο είναι γεμάτος ή εάν ο δίσκος είναι υπό φόρτωση.  
  Σύνδεση  
  Ο υποτελής διακομιστής αναπαραγωγής συνδέεται με τον κύριο διακομιστή.  
  Αντιγραφή σε πίνακα tmp στο δίσκο  
  Επειδή το προσωρινό σύνολο αποτελεσμάτων είναι μεγαλύτερο από tmp_table_size, ο προσωρινός πίνακας μετατρέπεται από χώρο αποθήκευσης στη μνήμη σε δίσκο για εξοικονόμηση μνήμης.  
  Δημιουργία πίνακα tmp  
  Δημιουργείται ένας προσωρινός πίνακας για τη διατήρηση ορισμένων από τα αποτελέσματα του ερωτήματος.  
  διαγραφή από τον κύριο πίνακα  
  Ο διακομιστής εκτελεί το πρώτο μέρος μιας διαγραφής πολλών πινάκων και μόλις διέγραψε τον πρώτο πίνακα.  
  διαγραφή από πίνακες αναφοράς  
  Ο διακομιστής εκτελεί το δεύτερο μέρος της διαγραφής πολλών πινάκων, το οποίο είναι η διαγραφή εγγραφών από άλλους πίνακες.  
  Τραπέζια έκπλυσης  
  Κάνοντας τους FLUSH TABLES, περιμένοντας άλλα νήματα να κλείσουν τον πίνακα δεδομένων.  
  Σκοτώθηκε  
  Εάν ένα αίτημα kill σταλεί σε ένα νήμα, το νήμα θα ελέγξει τη σημαία kill και θα εγκαταλείψει το επόμενο αίτημα kill. Η MySQL ελέγχει για kill flags σε κάθε κύριο βρόχο, αν και σε ορισμένες περιπτώσεις το νήμα μπορεί να πεθάνει για σύντομο χρονικό διάστημα. Εάν το νήμα είναι κλειδωμένο από άλλο νήμα, το αίτημα kill θα τεθεί σε ισχύ αμέσως μόλις απελευθερωθεί η κλειδαριά.  
  Κλειδωμένο  
  Κλειδωμένο από άλλα ερωτήματα.  
  Αποστολή δεδομένων  
  Η εγγραφή του ερωτήματος SELECT υποβάλλεται σε επεξεργασία ενώ τα αποτελέσματα αποστέλλονται στον υπολογιστή-πελάτη.  
  Ταξινόμηση για ομάδα  
  Ταξινόμηση για GROUP BY.  
  Ταξινόμηση για παραγγελία  
  Η ταξινόμηση γίνεται για ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ.  
  Ανοιγόμενα τραπέζια  
  Αυτή η διαδικασία θα πρέπει να είναι γρήγορη, εκτός εάν παρεμποδίζεται από άλλους παράγοντες. Για παράδειγμα, ένας πίνακας δεδομένων δεν μπορεί να ανοίξει από άλλο νήμα μέχρι να εκτελεστεί η δήλωση ALTER TABLE ή LOCK TABLE. Προσπαθώ να ανοίξω ένα τραπέζι.  
  Αφαίρεση διπλότυπων  
  Εκτελείται ένα ερώτημα SELECT DISTINCT, αλλά η MySQL δεν είναι σε θέση να βελτιστοποιήσει τις διπλότυπες εγγραφές στο προηγούμενο στάδιο. Επομένως, η MySQL πρέπει να αφαιρέσει ξανά τις διπλές εγγραφές πριν στείλει τα αποτελέσματα στον πελάτη.  
  Ανοίξτε ξανά τον πίνακα  
  Λαμβάνεται μια κλειδαριά σε ένα τραπέζι, αλλά πρέπει να τροποποιηθεί μετά την τροποποίηση της δομής του πίνακα. Απελευθέρωσε ήδη το κλείδωμα, έκλεισε το φύλλο δεδομένων και προσπαθεί να ανοίξει ξανά τον πίνακα δεδομένων.  
  Επισκευή με ταξινόμηση  
  Η εντολή επιδιόρθωσης είναι η ταξινόμηση για τη δημιουργία ευρετηρίου.  
  Επισκευή με keycache  
  Η οδηγία επιδιόρθωσης χρησιμοποιεί την προσωρινή μνήμη ευρετηρίου για να δημιουργήσει νέα ευρετήρια ένα προς ένα. Θα είναι πιο αργό από το Repair by sorting.  
  Αναζήτηση γραμμών για ενημέρωση  
  Οι επιλέξιμες εγγραφές εντοπίζονται για ενημερώσεις. Πρέπει να γίνει πριν η ΕΝΗΜΕΡΩΣΗ τροποποιήσει τη σχετική εγγραφή.  
  Ύπνος  
  Αναμονή για την αποστολή νέου αιτήματος από τον πελάτη.  
  Κλείδωμα συστήματος  
  Αναμονή για την απόκτηση εξωτερικού κλειδώματος συστήματος. Εάν δεν υπάρχουν διακομιστές mysqld που να εκτελούνται ταυτόχρονα ζητώντας τον ίδιο πίνακα, τα εξωτερικά κλειδώματα συστήματος μπορούν να απαγορευτούν προσθέτοντας την παράμετρο –skip-external-locking.  
  Αναβάθμιση κλειδαριάς  
  Το INSERT DELAYED προσπαθεί να πάρει έναν πίνακα κλειδώματος για να εισαγάγει μια νέα εγγραφή.  
  Ενημέρωση  
  Αναζήτηση αντίστοιχων εγγραφών και τροποποίησή τους.  
  Κλείδωμα χρήστη  
  περιμένει GET_LOCK().  
  Αναμονή για τραπέζια  
  Το νήμα ειδοποιήθηκε ότι η δομή του φύλλου δεδομένων είχε τροποποιηθεί και έπρεπε να ανοίξει ξανά για να αποκτήσει τη νέα δομή. Στη συνέχεια, για να ανοίξετε ξανά τον πίνακα δεδομένων, πρέπει να περιμένετε έως ότου όλα τα άλλα νήματα κλείσουν τον πίνακα. Αυτή η ειδοποίηση εμφανίζεται στις ακόλουθες περιπτώσεις: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE ή OPTIMIZE TABLE.  
  Αναμονή για ένθετο χειριστή  
  Το INSERT DELAYED έχει επεξεργαστεί όλα τα ένθετα που εκκρεμούν και περιμένει νέο αίτημα.  
  Οι περισσότερες καταστάσεις αντιστοιχούν σε γρήγορες λειτουργίες, εφόσον ένα νήμα παραμένει στην ίδια κατάσταση για λίγα δευτερόλεπτα, τότε μπορεί να υπάρχει πρόβλημα που πρέπει να ελεγχθεί.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 1/3/2019 10:26:49 π.μ. |
Επίσημος σύνδεσμος τεκμηρίωσης:https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 1/3/2019 10:34:13 π.μ. |


Χρειάζονται 10 δευτερόλεπτα για να υποβάλετε ερώτημα σε ένα κομμάτι δεδομένων.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com