τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Τα βήματα για το επίπεδο διακομιστή για να εκτελέσει την SQL με τη σειρά είναι:
Αίτημα πελάτη -> Εφαρμογή σύνδεσης (επαλήθευση ταυτότητας χρήστη και παραχώρηση αδειών) Προσωρινή μνήμη ερωτήματος (επιστροφή απευθείας εάν υπάρχει προσωρινή μνήμη, εκτελέστε επόμενες λειτουργίες εάν όχι) Αναλυτής (εκτέλεση λεξιλογικής ανάλυσης και ανάλυσης σύνταξης της SQL) Βελτιστοποιητής (κυρίως εκτέλεση μεθόδου βελτιστοποίησης SQL για την επιλογή βέλτιστο σχέδιο εκτέλεσης) Εκτελεστής (κατά την εκτέλεση, πρώτα θα ελέγξει εάν ο χρήστης έχει άδεια εκτέλεσης και, στη συνέχεια, θα χρησιμοποιήσει τη διεπαφή που παρέχεται από αυτήν τη μηχανή) -> Μεταβείτε στο επίπεδο του κινητήρα για να λάβετε επιστροφή δεδομένων (εάν η κρυφή μνήμη ερωτήματος είναι ενεργοποιημένη, θα αποθηκεύσει προσωρινά αποτελέσματα ερωτημάτων)
Το Buffer Pool είναι ένα σημαντικό μέρος της μηχανής αποθήκευσης InnoDB στη βάση δεδομένων MySQL Χρησιμοποιείται κυρίως για την προσωρινή αποθήκευση δεδομένων πίνακα και την ευρετηρίαση δεδομένων για τη μείωση των λειτουργιών εισόδου/εξόδου του δίσκου και τη βελτίωση της απόδοσης επεξεργασίας της βάσης δεδομένων. Ακολουθεί μια λεπτομερής ανάλυση του Buffer Pool:
ορισμός: Το Buffer Pool είναι μια περιοχή μνήμης στη μηχανή αποθήκευσης InnoDB, που χρησιμοποιείται για την προσωρινή αποθήκευση σελίδων δεδομένων και την ευρετηρίαση σελίδων στο δίσκο για τη μείωση της άμεσης πρόσβασης στο δίσκο.
αποτέλεσμα: Βελτιώστε την ταχύτητα πρόσβασης στα δεδομένα και μειώστε το κόστος εισόδου/εξόδου του δίσκου μέσω του μηχανισμού προσωρινής αποθήκευσης.
σύνθεση : Το Buffer Pool αποτελείται από αποθηκευμένες σελίδες δεδομένων (Σελίδα) και αντίστοιχα μπλοκ ελέγχου. Το μπλοκ ελέγχου αποθηκεύει τις πληροφορίες μεταδεδομένων της προσωρινής σελίδας, όπως τον χώρο του πίνακα στον οποίο ανήκει, τον αριθμό σελίδας δεδομένων, τη διεύθυνση της σελίδας προσωρινής μνήμης στο Buffer Pool κ.λπ.
προεπιλεγμένο μέγεθος: Το προεπιλεγμένο μέγεθος του Buffer Pool στη MySQL είναι συνήθως 128 MB (αλλά σημειώστε ότι διαφορετικές εκδόσεις της MySQL ή διαφορετικές διαμορφώσεις μπορεί να έχουν ως αποτέλεσμα το προεπιλεγμένο μέγεθος να είναι διαφορετικό).
Παράμετροι διαμόρφωσης:πέρασμαinnodb_buffer_pool_size
Οι παράμετροι μπορούν να διαμορφώσουν το μέγεθος του Buffer Pool Συνήθως συνιστάται να το ρυθμίσετε στο 60%-80% της μνήμης του συστήματος.
κατανομή μνήμης: Το Buffer Pool είναι ένας συνεχής χώρος μνήμης Όταν η MySQL εκτελείται για ένα χρονικό διάστημα, θα υπάρχουν τόσο ελεύθερες σελίδες προσωρινής αποθήκευσης όσο και χρησιμοποιημένες σελίδες προσωρινής μνήμης σε αυτόν τον χώρο μνήμης.
τύπος
: Οι σελίδες δεδομένων στο Buffer Pool μπορούν να χωριστούν σε τρεις τύπους ανάλογα με την κατάστασή τους: Δωρεάν σελίδα, Καθαρή σελίδα και Dirty Page.
Δωρεάν σελίδες: σελίδες προσωρινής αποθήκευσης που δεν χρησιμοποιούνται.
Καθαρισμός σελίδας: Μια σελίδα προσωρινής αποθήκευσης που έχει χρησιμοποιηθεί αλλά τα δεδομένα δεν έχουν τροποποιηθεί.
Dirty page: Μια σελίδα προσωρινής αποθήκευσης που έχει χρησιμοποιηθεί και τα δεδομένα έχουν τροποποιηθεί και τα δεδομένα της δεν συνάδουν με τα δεδομένα στο δίσκο.
διαχειρίζονται
: Το InnoDB διαχειρίζεται αυτές τις σελίδες κρυφής μνήμης μέσω τριών δομών συνδεδεμένων λιστών:
Δωρεάν συνδεδεμένη λίστα: διαχειρίζεται ελεύθερες σελίδες και καταγράφει τις πληροφορίες μπλοκ ελέγχου των δωρεάν σελίδων κρυφής μνήμης.
Λίστα συνδεδεμένων LRU: διαχειρίζεται καθαρές σελίδες και βρώμικες σελίδες, χρησιμοποιεί έναν βελτιωμένο αλγόριθμο LRU και χωρίζεται σε νεαρές περιοχές και παλιές περιοχές για τη βελτιστοποίηση του ρυθμού επίσκεψης στην κρυφή μνήμη.
Flush linked list: διαχειρίζεται τις βρώμικες σελίδες που πρέπει να ξεπλυθούν στο δίσκο, ταξινομημένες κατά χρόνο τροποποίησης.
πρόσβαση δεδομένων : Όταν χρειάζεται πρόσβαση σε μια σελίδα δεδομένων, το InnoDB θα ελέγξει πρώτα εάν η σελίδα βρίσκεται ήδη στο Buffer Pool. Εάν υπάρχει ήδη, η σελίδα χρησιμοποιείται απευθείας εάν δεν υπάρχει, η σελίδα διαβάζεται από το δίσκο στο Buffer Pool και ενημερώνεται η αντίστοιχη συνδεδεμένη λίστα.
Ενημέρωση δεδομένων: Όταν τροποποιείται μια σελίδα δεδομένων, η σελίδα θα επισημανθεί ως βρώμικη σελίδα και μπορεί να προστεθεί στη συνδεδεμένη λίστα Flush για να περιμένει το νήμα φόντου να το ξεπλύνει στο δίσκο.
έξωση κρυφής μνήμης: Όταν ο χώρος Buffer Pool είναι ανεπαρκής, η λιγότερο πρόσφατα χρησιμοποιημένη προσωρινή σελίδα θα εξαλειφθεί σύμφωνα με τον αλγόριθμο LRU.
Ρυθμίστε το μέγεθος κατάλληλα: Λογικές ρυθμίσεις με βάση τη μνήμη του συστήματος και τις συνθήκες φόρτωσης της βάσης δεδομένωνinnodb_buffer_pool_size
παράμετρος.
Παρακολούθηση και προσαρμογή: Παρακολουθήστε τακτικά τους δείκτες χρήσης και απόδοσης του Buffer Pool και πραγματοποιήστε προσαρμογές όπως απαιτείται.
Αποφύγετε τη σάρωση πλήρους πίνακα: Η πλήρης σάρωση πίνακα θα έχει ως αποτέλεσμα τη φόρτωση μεγάλου αριθμού σελίδων δεδομένων στο Buffer Pool, μειώνοντας το ποσοστό επιτυχίας της κρυφής μνήμης.
Συνοψίζοντας, το Buffer Pool είναι ένα από τα βασικά στοιχεία της μηχανής αποθήκευσης InnoDB στη βάση δεδομένων MySQL Μέσω λογικής διαμόρφωσης και διαχείρισης, η απόδοση και η αποτελεσματικότητα της βάσης δεδομένων μπορούν να βελτιωθούν σημαντικά.
Η διαδικασία MySQL περιλαμβάνει πολλαπλούς συνδέσμους, ξεκινώντας από τη σύνδεση μεταξύ του πελάτη και του διακομιστή MySQL, έως την εκτέλεση, τη βελτιστοποίηση, την ανάγνωση δεδομένων και την επιστροφή των αποτελεσμάτων των δηλώσεων SQL. Ακολουθεί μια λεπτομερής επισκόπηση της διαδικασίας MySQL:
Εφαρμογή σύνδεσης (Διαχειριστής σύνδεσης):
Όταν ένας πελάτης (όπως μια εφαρμογή ή ένα εργαλείο γραμμής εντολών) ζητά σύνδεση με έναν διακομιστή MySQL, η εφαρμογή σύνδεσης της MySQL είναι υπεύθυνη για το χειρισμό αυτών των αιτημάτων σύνδεσης.
Η εφαρμογή σύνδεσης επαληθεύει την ταυτότητα και τα δικαιώματα του πελάτη, κάτι που συνήθως περιλαμβάνει τον έλεγχο της αντιστοίχισης του ονόματος χρήστη και του κωδικού πρόσβασης.
Εάν η επαλήθευση είναι επιτυχής, η εφαρμογή σύνδεσης θα εκχωρήσει ένα νήμα (ή περίοδο λειτουργίας) στον υπολογιστή-πελάτη για επακόλουθες λειτουργίες SQL.
Query Cache (Query Cache, σημείωση: Αυτή η ενότητα έχει αφαιρεθεί στη MySQL 8.0):
Για τα ερωτήματα SELECT, η MySQL ελέγχει πρώτα εάν το ίδιο ερώτημα και τα αποτελέσματά του υπάρχουν στη μνήμη cache του ερωτήματος.
Εάν υπάρχει, η MySQL θα επιστρέψει απευθείας τα αποτελέσματα στη μνήμη cache, αποφεύγοντας έτσι την εκτέλεση της πραγματικής λειτουργίας ερωτήματος.
Ωστόσο, επειδή η προσωρινή αποθήκευση ερωτημάτων μπορεί να προκαλέσει ασυνέπεια δεδομένων (για παράδειγμα, τα δεδομένα προσωρινής αποθήκευσης μπορεί να έχουν τροποποιηθεί από άλλες συναλλαγές), η συνάρτηση προσωρινής αποθήκευσης ερωτήματος έχει καταργηθεί στο MySQL 8.0.
Αναλυτής:
Η δήλωση SQL που αποστέλλεται από τον πελάτη στέλνεται πρώτα στον αναλυτή.
Η αποστολή του αναλυτή είναι να αναλύσει τη δήλωση SQL, να ελέγξει εάν η σύνταξή της είναι σωστή και να τη μετατρέψει σε μια εσωτερική δομή δεδομένων (όπως ένα δέντρο ανάλυσης ή ένα δέντρο σύνταξης).
Εάν υπάρχει συντακτικό σφάλμα στην πρόταση SQL, ο αναλυτής θα επιστρέψει πληροφορίες σφάλματος στον πελάτη.
Προεπεξεργαστής:
Σε ορισμένες εκδόσεις MySQL ή σε ορισμένα συγκεκριμένα σενάρια, μπορεί να υπάρχει ένα στάδιο προεπεξεργαστή.
Ο προεπεξεργαστής είναι κυρίως υπεύθυνος για την περαιτέρω επεξεργασία εντολών SQL, όπως ο έλεγχος εάν υπάρχει ο πίνακας ή το πεδίο, η επέκταση * στη δήλωση SELECT σε όλες τις στήλες του πίνακα κ.λπ.
Optimizer:
Ο βελτιστοποιητής είναι υπεύθυνος για την αξιολόγηση διαφορετικών σχεδίων εκτέλεσης για δηλώσεις SQL και την επιλογή του βέλτιστου σχεδίου εκτέλεσης.
Ο βελτιστοποιητής λαμβάνει υπόψη διάφορους παράγοντες, όπως τα διαθέσιμα ευρετήρια, την αποτελεσματικότητα της μεθόδου ένωσης, το κόστος του ερωτήματος κ.λπ.
Το εργαλείο βελτιστοποίησης μπορεί να βελτιώσει σημαντικά την απόδοση των ερωτημάτων μέσω λειτουργιών όπως η χρήση ευρετηρίων, η αναδιάταξη ερωτημάτων ή η συγχώνευση ερωτημάτων.
Εκτελεστής διαθήκης:
Ο εκτελεστής εκτελεί τις πραγματικές λειτουργίες ερωτήματος με βάση το σχέδιο εκτέλεσης που δημιουργείται από το βελτιστοποιητή.
Ο εκτελεστής θα καλέσει τη διεπαφή της μηχανής αποθήκευσης (όπως το InnoDB) για να διαβάσει τα δεδομένα στον πίνακα δεδομένων και να εκτελέσει λειτουργίες όπως ταξινόμηση, συνάθροιση και φιλτράρισμα.
Τέλος, ο εκτελεστής επιστρέφει τα αποτελέσματα του ερωτήματος στον πελάτη.
Μηχανή αποθήκευσης:
Η MySQL υποστηρίζει πολλαπλές μηχανές αποθήκευσης και κάθε μηχανή αποθήκευσης έχει τις δικές της συγκεκριμένες μεθόδους αποθήκευσης και ανάκτησης δεδομένων.
Το InnoDB είναι μία από τις προεπιλεγμένες μηχανές αποθήκευσης της MySQL και υποστηρίζει προηγμένες λειτουργίες βάσης δεδομένων, όπως επεξεργασία συναλλαγών, κλείδωμα σε επίπεδο σειράς και ξένα κλειδιά.
Όταν ο εκτελεστής καλεί τη διεπαφή της μηχανής αποθήκευσης, η μηχανή αποθήκευσης είναι υπεύθυνη για την ανάγνωση δεδομένων από το δίσκο ή την εγγραφή δεδομένων στο δίσκο.
Buffer Pool:
Η μηχανή αποθήκευσης InnoDB χρησιμοποιεί το Buffer Pool για την προσωρινή αποθήκευση δεδομένων πίνακα και την ευρετηρίαση δεδομένων για τη μείωση της άμεσης πρόσβασης στο δίσκο.
Η διαχείριση των σελίδων δεδομένων στο Buffer Pool γίνεται με βάση τη συχνότητα πρόσβασης και την κατάσταση τροποποίησης για τη βελτίωση του ρυθμού επίσκεψης στην κρυφή μνήμη και της απόδοσης ερωτημάτων.
Συναλλαγή:
Η MySQL υποστηρίζει την επεξεργασία συναλλαγών, επιτρέποντας τη δέσμευση ή την επαναφορά πολλαπλών λειτουργιών ως σύνολο.
Κατά την εκτέλεση της συναλλαγής, η MySQL θα καταγράφει τις απαραίτητες πληροφορίες καταγραφής (όπως το αρχείο καταγραφής εκ νέου και το αρχείο καταγραφής αναίρεσης) για να διασφαλίσει την ακεραιότητα και τη συνέπεια των δεδομένων.
Εάν η εκτέλεση της συναλλαγής είναι επιτυχής, όλες οι τροποποιήσεις θα αποθηκευτούν μόνιμα στη βάση δεδομένων, εάν η εκτέλεση της συναλλαγής αποτύχει, μπορείτε να χρησιμοποιήσετε το αρχείο καταγραφής αναίρεσης για να εκτελέσετε μια λειτουργία επαναφοράς και να επαναφέρετε τα δεδομένα στην κατάσταση πριν από την έναρξη της συναλλαγής.
Η διαδικασία της MySQL περιλαμβάνει σύνδεση και έλεγχο ταυτότητας, επεξεργασία ερωτημάτων, αποθήκευση και ανάκτηση δεδομένων και επεξεργασία συναλλαγών. Με τη βελτιστοποίηση κάθε βήματος σε αυτούς τους συνδέσμους, η απόδοση και η αξιοπιστία της βάσης δεδομένων MySQL μπορούν να βελτιωθούν σημαντικά. Ταυτόχρονα, η κατανόηση της διαδικασίας εκτέλεσης της MySQL θα βοηθήσει επίσης στην καλύτερη κατανόηση του εσωτερικού μηχανισμού λειτουργίας της, άρα στον καλύτερο σχεδιασμό και βελτιστοποίηση της βάσης δεδομένων.
Η ομάδα σύνδεσης της MySQL είναι μια τεχνολογία που χρησιμοποιείται για τη διαχείριση και την επαναχρησιμοποίηση των συνδέσεων βάσης δεδομένων. Ακολουθεί μια λεπτομερής εξήγηση σχετικά με την πισίνα σύνδεσης MySQL:
Ο χώρος συγκέντρωσης σύνδεσης MySQL δημιουργεί έναν επαρκή αριθμό συνδέσεων βάσης δεδομένων κατά την εκκίνηση του προγράμματος και διαχειρίζεται αυτές τις συνδέσεις ομοιόμορφα για να σχηματίσει ένα χώρο συγκέντρωσης συνδέσεων. Όταν το πρόγραμμα χρειάζεται να αποκτήσει πρόσβαση στη βάση δεδομένων, θα κάνει δυναμική αίτηση για σύνδεση από το χώρο συγκέντρωσης συνδέσεων και θα επιστρέψει τη σύνδεση στο χώρο συγκέντρωσης σύνδεσης μετά τη χρήση, αντί να δημιουργεί εκ νέου και να κλείνει τη σύνδεση για κάθε λειτουργία.
Μειώστε την κατανάλωση πόρων : Η δημιουργία και το κλείσιμο μιας σύνδεσης βάσης δεδομένων είναι μια σχετικά χρονοβόρα διαδικασία, η οποία περιλαμβάνει την τριπλή χειραψία και το τετραμερές κύμα της σύνδεσης TCP, καθώς και τη διαδικασία ελέγχου ταυτότητας βάσης δεδομένων. Μέσω της συγκέντρωσης συνδέσεων, οι υπάρχουσες συνδέσεις μπορούν να επαναχρησιμοποιηθούν για τη μείωση αυτών των γενικών εξόδων.
Βελτιώστε την απόδοση : Σε ένα σενάριο υψηλής συγχρονισμού, εάν δημιουργηθεί μια νέα σύνδεση βάσης δεδομένων για κάθε αίτημα, η απόδοση του διακομιστή θα μειωθεί σημαντικά. Η χρήση μιας ομάδας σύνδεσης μπορεί να βελτιώσει σημαντικά την ταχύτητα απόκρισης και την απόδοση της βάσης δεδομένων.
Αποφύγετε διαρροές σύνδεσης : Χωρίς τη χρήση χώρου συγκέντρωσης σύνδεσης, εάν παρουσιαστεί εξαίρεση όταν το πρόγραμμα κλείνει τη σύνδεση, μπορεί να προκαλέσει διαρροή σύνδεσης, δηλαδή η σύνδεση να μην έχει κλείσει σωστά και να καταλαμβάνει πόρους του συστήματος. Η πισίνα σύνδεσης μπορεί να αποφύγει αυτήν την κατάσταση μέσω του μηχανισμού ανακύκλωσης χρονικού ορίου.
αρχικοποίηση: Όταν ξεκινά το πρόγραμμα, το χώρο συγκέντρωσης συνδέσεων θα δημιουργήσει έναν ορισμένο αριθμό συνδέσεων βάσης δεδομένων σύμφωνα με τη διαμόρφωση και θα τοποθετήσει αυτές τις συνδέσεις στο χώρο συγκέντρωσης συνδέσεων για δημιουργία αντιγράφων ασφαλείας.
Κάντε αίτηση για σύνδεση : Όταν το πρόγραμμα χρειάζεται πρόσβαση στη βάση δεδομένων, θα υποβάλει αίτηση για σύνδεση από το χώρο συγκέντρωσης συνδέσεων. Εάν υπάρχει σύνδεση σε αδράνεια στο χώρο συγκέντρωσης σύνδεσης, θα επιστραφεί απευθείας στο πρόγραμμα για χρήση, εάν δεν υπάρχει σύνδεση σε αδράνεια, θα περιμένει για ένα ορισμένο χρονικό διάστημα σύμφωνα με τη διαμόρφωση ή θα εμφανίσει ένα σφάλμα.
Χρήση σύνδεσης: Το πρόγραμμα χρησιμοποιεί την απαιτούμενη σύνδεση για να εκτελέσει λειτουργίες βάσης δεδομένων.
σύνδεση επιστροφής : Αφού ολοκληρωθεί η λειτουργία, το πρόγραμμα επιστρέφει τη σύνδεση στο χώρο συγκέντρωσης συνδέσεων. Ο χώρος συγκέντρωσης σύνδεσης θα εκτελέσει ορισμένους ελέγχους στη σύνδεση, εάν η σύνδεση είναι ακόμα έγκυρη, θα επανατοποθετηθεί στο χώρο συγκέντρωσης σύνδεσης, θα κλείσει και θα αφαιρεθεί από το χώρο συγκέντρωσης σύνδεσης.
Κλείστε την πισίνα σύνδεσης: Όταν τελειώσει το πρόγραμμα, όλες οι συνδέσεις στο χώρο συγκέντρωσης συνδέσεων θα κλείσουν και οι κατειλημμένοι πόροι του συστήματος θα αποδεσμευτούν.
Υπάρχουν πολλοί πάροχοι πισίνας σύνδεσης MySQL στην αγορά, μεταξύ των οποίων οι πιο δημοφιλείς είναι:
DBCP : Είναι μια εφαρμογή πισίνας σύνδεσης ανοιχτού κώδικα στο πλαίσιο του έργου Apache και είναι η ομάδα σύνδεσης που συνοδεύει το Tomcat. Είναι ταχύτερο από άλλες δεξαμενές σύνδεσης, αλλά μπορεί να μην είναι αρκετά σταθερό.
C3P0 : Είναι μια πισίνα σύνδεσης JDBC ανοιχτού κώδικα, η οποία υλοποιεί πηγή δεδομένων και σύνδεση JNDI και υποστηρίζει το πρότυπο JDBC3 και την τυπική επέκταση JDBC2. Ο ρυθμός του C3P0 είναι σχετικά αργός αλλά πολύ σταθερός.
Ιερέας των κελτών (Druid): Είναι μια πισίνα σύνδεσης ανοιχτού κώδικα που παρέχεται από την Alibaba Συνδυάζει τα πλεονεκτήματα των DBCP και C3P0 και παρέχει ισχυρές λειτουργίες παρακολούθησης και επέκτασης. Το Druid είναι επί του παρόντος ένα από τα πιο συχνά χρησιμοποιούμενα πισίνες σύνδεσης MySQL.
Η διαμόρφωση της πισίνας σύνδεσης περιλαμβάνει συνήθως τις ακόλουθες πτυχές:
Μέγιστος αριθμός συνδέσεων: Ο μέγιστος αριθμός συνδέσεων που μπορεί να διαχειριστεί η ομάδα σύνδεσης.
Ελάχιστος αριθμός συνδέσεων: Ο αρχικός αριθμός συνδέσεων που δημιουργήθηκαν κατά την εκκίνηση του χώρου συγκέντρωσης συνδέσεων.
Λήψη χρονικού ορίου σύνδεσης: Ο μέγιστος χρόνος αναμονής κατά τη λήψη σύνδεσης από το χώρο συγκέντρωσης σύνδεσης.
Επαλήθευση σύνδεσης: Επαληθεύστε την εγκυρότητα της σύνδεσης πριν αποκτήσετε τη σύνδεση ή κατά την επιστροφή της σύνδεσης.
Στρατηγική ανακύκλωσης συνδέσεων: Ανακυκλώστε τις συνδέσεις βάσει του χρόνου αδράνειας και του χρόνου χρήσης τους.
Η συγκέντρωση συνδέσεων και η συγκέντρωση νημάτων είναι δύο διαφορετικές τεχνολογίες συγκέντρωσης πόρων, αλλά υπάρχει μια ορισμένη σχέση μεταξύ τους. Η ομάδα νημάτων χρησιμοποιείται κυρίως για τη διαχείριση πόρων νημάτων, ενώ η ομάδα σύνδεσης χρησιμοποιείται για τη διαχείριση πόρων σύνδεσης βάσης δεδομένων. Όταν ένα νήμα στο χώρο συγκέντρωσης νημάτων χρειάζεται να εκτελέσει μια λειτουργία βάσης δεδομένων, θα υποβάλει αίτηση για σύνδεση από το χώρο συγκέντρωσης σύνδεσης μετά την ολοκλήρωση της λειτουργίας, η σύνδεση θα επιστραφεί στο χώρο συγκέντρωσης σύνδεσης. Αυτή η σχέση βοηθά στην επίτευξη αποτελεσματικής χρήσης πόρων και απλοποιημένης διαχείρισης.
Συνοψίζοντας, η πισίνα σύνδεσης MySQL είναι μια σημαντική τεχνολογία διαχείρισης σύνδεσης βάσης δεδομένων. Παρέχει ισχυρή υποστήριξη για λειτουργίες βάσης δεδομένων με την επαναχρησιμοποίηση των συνδέσεων, τη μείωση της κατανάλωσης πόρων και τη βελτίωση της απόδοσης. Σε πραγματικές εφαρμογές, ο κατάλληλος πάροχος πισίνας σύνδεσης και οι παράμετροι διαμόρφωσης μπορούν να επιλεγούν σύμφωνα με τις συγκεκριμένες ανάγκες και τα σενάρια του έργου.
Οι ερωτήσεις συνέντευξης που σχετίζονται με τα αρχεία καταγραφής MySQL μπορούν να καλύπτουν πολλές πτυχές, όπως τον τύπο, τον ρόλο, τη διαμόρφωση, τη βελτιστοποίηση των αρχείων καταγραφής και την εφαρμογή των αρχείων καταγραφής στην ανάκτηση δεδομένων, την αναπαραγωγή δεδομένων κ.λπ. Ακολουθούν μερικές κοινές ερωτήσεις συνέντευξης που σχετίζονται με το αρχείο καταγραφής MySQL και οι λεπτομερείς απαντήσεις τους:
Τα κοινά αρχεία καταγραφής στη MySQL περιλαμβάνουν τα ακόλουθα:
Αρχείο καταγραφής σφαλμάτων : Καταγράψτε πληροφορίες σφάλματος όταν ξεκινά, εκτελείται ή σταματά ο διακομιστής MySQL, καθώς και τυχόν πληροφορίες κρίσιμων σφαλμάτων. Αυτό βοηθά στη διάγνωση του προβλήματος.
Αρχείο καταγραφής ερωτημάτων (Γενικό αρχείο καταγραφής) : Καταγράψτε κάθε αίτημα πελάτη και απάντηση που λαμβάνεται από τον διακομιστή MySQL, συμπεριλαμβανομένων των δραστηριοτήτων σύνδεσης χρήστη, των εκτελεσμένων δηλώσεων SQL κ.λπ. Συνήθως χρησιμοποιείται για έλεγχο ή εντοπισμό σφαλμάτων.
Αργό αρχείο καταγραφής ερωτημάτων : Καταγράψτε τις εντολές SQL των οποίων ο χρόνος εκτέλεσης υπερβαίνει το όριο, καθώς και ο χρόνος εκτέλεσης, οι πίνακες στους οποίους έχετε πρόσβαση, τα ευρετήρια που χρησιμοποιούνται και άλλες πληροφορίες αυτών των εντολών. Χρησιμοποιείται για συντονισμό απόδοσης και βελτιστοποίηση ερωτημάτων.
Δυαδικό αρχείο καταγραφής (Binlog για συντομία): Καταγράφει όλες τις δηλώσεις που αλλάζουν δεδομένα βάσης δεδομένων (εξαιρουμένων των δηλώσεων όπως SELECT και SHOW), που χρησιμοποιούνται κυρίως για αναπαραγωγή και ανάκτηση δεδομένων.
Επανάληψη καταγραφής: Στη μηχανή αποθήκευσης InnoDB, χρησιμοποιείται για τη διασφάλιση της ανθεκτικότητας των συναλλαγών Ακόμη και αν παρουσιαστεί σφάλμα συστήματος, τα δεδομένα μπορούν να ανακτηθούν μέσω αρχείων καταγραφής εκ νέου.
Αναίρεση αρχείου καταγραφής: Στη μηχανή αποθήκευσης InnoDB, χρησιμοποιείται για την καταγραφή της κατάστασης δεδομένων πριν από την έναρξη της συναλλαγής, έτσι ώστε όταν η συναλλαγή αποτύχει ή επανέλθει, τα δεδομένα μπορούν να επαναφερθούν στην κατάσταση πριν από την έναρξη της συναλλαγής.
Ημερολόγιο ρελέ: Στην αρχιτεκτονική αναπαραγωγής MySQL, το αρχείο καταγραφής αναμετάδοσης στον εξαρτημένο διακομιστή χρησιμοποιείται για την αποθήκευση του περιεχομένου δυαδικού αρχείου καταγραφής που λαμβάνεται από τον κύριο διακομιστή.
Το αργό αρχείο καταγραφής ερωτημάτων μπορεί να ανοίξει και να ρυθμιστεί μέσω του αρχείου διαμόρφωσης MySQL (όπως my.cnf ή my.ini) ή μπορεί να οριστεί δυναμικά μέσω εντολών SQL.
Μέθοδος αρχείου διαμόρφωσης:
Προσθέστε ή τροποποιήστε τις ακόλουθες παραμέτρους στο αρχείο διαμόρφωσης MySQL:
[mysqld] slow_query_log = 1 slow_query_log_file = /path/to/your/slow-query.log long_query_time = 2
σε,
slow_query_log
Χρησιμοποιείται για την ενεργοποίηση αργών αρχείων καταγραφής ερωτημάτων,
slow_query_log_file
Καθορίστε τη διαδρομή προς το αργό αρχείο καταγραφής ερωτημάτων,
long_query_time
Ορίστε το χρόνο εκτέλεσης των δηλώσεων SQL που υπερβαίνει τον αριθμό των δευτερολέπτων που θα καταγραφούν στο αργό αρχείο καταγραφής ερωτημάτων.
Αφού τροποποιήσετε το αρχείο διαμόρφωσης, πρέπει να επανεκκινήσετε την υπηρεσία MySQL.
Λειτουργία εντολών SQL:
Το αργό αρχείο καταγραφής ερωτημάτων μπορεί να ενεργοποιηθεί δυναμικά μέσω εντολών SQL, αλλάslow_query_log_file
καιlong_query_time
Οι παράμετροι μπορεί να χρειαστεί να οριστούν μέσω ενός αρχείου διαμόρφωσης, καθώς οι δυναμικές ρυθμίσεις ενδέχεται να μην υποστηρίζονται ή να μην λειτουργούν.
Ενεργοποίηση αργού αρχείου καταγραφής ερωτημάτων:
sql复制代码 SET GLOBAL slow_query_log = 'ON';
Λάβετε υπόψη ότι το αργό αρχείο καταγραφής ερωτημάτων που ανοίγει δυναμικά χρησιμοποιώντας εντολές SQL ενδέχεται να καταστεί άκυρο μετά την επανεκκίνηση του συστήματος, επομένως συνιστάται να το ορίσετε μέσω του αρχείου διαμόρφωσης.
Τα δυαδικά αρχεία καταγραφής (Binlog) έχουν τρεις μορφές:
ΔΗΛΩΣΗ : Ανατύπωση που βασίζεται σε δηλώσεις SQL (ανατύπωση βάσει δηλώσεων, SBR). Σε αυτή τη μορφή, η MySQL θα καταγράφει τις εκτελεσμένες δηλώσεις SQL στο binlog. Το πλεονέκτημά του είναι ότι ο όγκος του αρχείου καταγραφής είναι μικρός, αλλά μπορεί να αντιμετωπίσει ορισμένα προβλήματα αναπαραγωγής, όπως συναρτήσεις, ενεργοποιήσεις, αποθηκευμένες διαδικασίες κ.λπ. που μπορεί να προκαλέσουν ασυνέπεια στα δεδομένα master-slave.
ΣΕΙΡΑ : Αναπαραγωγή βάσει σειράς (RBR). Σε αυτή τη μορφή, η MySQL θα καταγράφει τις αλλαγές δεδομένων των τροποποιημένων σειρών. Έχει το πλεονέκτημα ότι αποφεύγει ορισμένα ζητήματα αναπαραγωγής, αλλά ο όγκος καταγραφής μπορεί να είναι μεγάλος.
ΜΙΚΤΟΣ : Αναδιπλασιασμός βάσει μικτής βάσης (MBR). Η MySQL θα επιλέξει αυτόματα να χρησιμοποιήσει τη μορφή STATEMENT ή ROW ανάλογα με την περίσταση. Η μικτή λειτουργία είναι η προεπιλεγμένη λειτουργία και έχει σχεδιαστεί για να συνδυάζει τα καλύτερα και των δύο κόσμων.
Το Redo Log διασφαλίζει τη διάρκεια των συναλλαγών στη μηχανή αποθήκευσης InnoDB με τους εξής τρόπους:
Όταν υποβάλλεται μια συναλλαγή, η μηχανή InnoDB θα αποθηκεύσει πρώτα το αρχείο καταγραφής επανάληψης της συναλλαγής στην προσωρινή μνήμη του αρχείου καταγραφής επανάληψης στη μνήμη και ταυτόχρονα θα ενημερώσει την αντίστοιχη σελίδα δεδομένων στη μνήμη.
Στη συνέχεια, την κατάλληλη στιγμή, γράψτε το αρχείο καταγραφής επανάληψης στο buffer καταγραφής επανάληψης στο αρχείο καταγραφής επανάληψης στο δίσκο. Αυτή η διαδικασία είναι ασύγχρονη, αλλά ο χρονισμός και η συχνότητα του βουρτσίσματος του δίσκου μπορούν να ελεγχθούν ρυθμίζοντας τις παραμέτρους.
Εάν παρουσιαστεί σφάλμα συστήματος, η μηχανή InnoDB θα ελέγξει το αρχείο καταγραφής επανάληψης κατά την εκκίνηση και θα επαναφέρει τις τροποποιήσεις που έγιναν από την πιο πρόσφατη συναλλαγή που υποβλήθηκε με βάση τις εγγραφές σε αυτήν, διασφαλίζοντας έτσι τη διάρκεια των δεδομένων.
Προβολή αρχείων καταγραφής:
αρχείο καταγραφής σφαλμάτων: Αυτό μπορεί να γίνει συνήθως κοιτάζοντας το αρχείο διαμόρφωσης MySQLlog_error
παράμετρος για να καθορίσετε τη διαδρομή του αρχείου για να εντοπίσετε το αρχείο καταγραφής σφαλμάτων και να χρησιμοποιήσετε ένα πρόγραμμα επεξεργασίας κειμένου ή ένα εργαλείο γραμμής εντολών, όπωςtail
、cat
κ.λπ.) για να δείτε το περιεχόμενό του.