τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το περιεχόμενο των αρχείων καταγραφής MySQL είναι πολύ σημαντικό και συχνά ρωτάται κατά τη διάρκεια συνεντεύξεων. Ταυτόχρονα, η απόκτηση γνώσεων που σχετίζονται με το ημερολόγιο θα μας βοηθήσει επίσης να κατανοήσουμε τις βασικές αρχές της MySQL και να μας βοηθήσει να αντιμετωπίσουμε και να επιλύσουμε προβλήματα όταν είναι απαραίτητο.
Οι συνηθισμένοι τύποι αρχείων καταγραφής στη MySQL περιλαμβάνουν κυρίως τις ακόλουθες κατηγορίες (για τη μηχανή αποθήκευσης InnoDB):
Το δυαδικό αρχείο καταγραφής (binlog) και το αρχείο καταγραφής συναλλαγών (redo log και undo log) είναι πιο σημαντικά και απαιτούν την εστίασή μας.
Το αργό αρχείο καταγραφής ερωτημάτων καταγράφει όλες τις δηλώσεις ερωτήματος των οποίων ο χρόνος εκτέλεσης υπερβαίνει το long_query_time (η προεπιλογή είναι 10 δευτ., συνήθως ορίζεται σε 1 δευτ. Χρησιμοποιείται συχνά κατά την επίλυση προβλήματος αργού ερωτήματος SQL (ο χρόνος εκτέλεσης της SQL είναι πολύ μεγάλος).
Η εύρεση αργής SQL είναι το πρώτο βήμα για τη βελτιστοποίηση της απόδοσης των εντολών SQL Στη συνέχεια, χρησιμοποιήστε την εντολή EXPLAIN για να αναλύσετε την αργή SQL και να λάβετε πληροφορίες σχετικά με το σχέδιο εκτέλεσης.
Μπορείτε να χρησιμοποιήσετε τις μεταβλητές εμφάνισης, όπως η εντολή "slow_query_log" για να ελέγξετε εάν το αργό αρχείο καταγραφής ερωτημάτων είναι απενεργοποιημένο από προεπιλογή.
Μπορεί να ενεργοποιηθεί με SET GLOBAL slow_query_log=ON
Η παράμετρος long_query_time καθορίζει πόσο χρόνο χρειάζεται ένα ερώτημα για να μπορεί να οριστεί ως αργό ερώτημα.
Μπορεί επίσης να τροποποιηθεί: ορίστε καθολικό long_query_time = 12
Στα πραγματικά έργα, το αργό αρχείο καταγραφής ερωτημάτων μπορεί να είναι σχετικά μεγάλο και δεν είναι βολικό να το αναλύσουμε απευθείας. Μπορούμε να χρησιμοποιήσουμε το επίσημο εργαλείο ανάλυσης και συντονισμού αργών ερωτημάτων της MySQL. mysqldumpslow . Το ιστολόγιό μου είναι επίσης απλά συνδεδεμένο με το εργαλείο mysqldumpslow:
[MySQL] mysqldumpslow εργαλείο--συνοψίζοντας αργά αρχεία καταγραφής ερωτημάτων-CSDN Blog
Υπάρχει μια μεταβλητή στη MySQL που καταγράφει τον τρέχοντα αριθμό αργών δηλώσεων ερωτήματος
w_queries%';
Η MySQL μας παρέχειΕΞΗΓΩεντολή για τη λήψη πληροφοριών σχετικά με το σχέδιο εκτέλεσης.
Το σχέδιο εκτέλεσης αναφέρεται στη συγκεκριμένη μέθοδο εκτέλεσης μιας δήλωσης SQL αφού βελτιστοποιηθεί από το εργαλείο βελτιστοποίησης ερωτημάτων MySQL. Τα σχέδια εκτέλεσης χρησιμοποιούνται συνήθως σε σενάρια όπως η ανάλυση και η βελτιστοποίηση απόδοσης SQL. Μέσω των αποτελεσμάτων του EXPLAIN, μπορείτε να μάθετε πληροφορίες όπως η ακολουθία ερωτημάτων του πίνακα δεδομένων, ο τύπος λειτουργίας της λειτουργίας ερωτήματος δεδομένων, ποια ευρετήρια μπορούν να χτυπηθούν, ποια ευρετήρια θα χτυπηθούν πραγματικά, πόσες σειρές εγγραφών σε κάθε δεδομένα ερωτήματα για τον πίνακα και άλλες πληροφορίες. Συγκεκριμένα, μπορούμε να βελτιστοποιήσουμε την SQL μέσω ορισμένων κοινών μεθόδων παρακάτω:
1. Αποφύγετε τη χρήση του SELECT *
SELECT * καταναλώνει περισσότερη CPU.
ΕΠΙΛΟΓΗ *Τα άχρηστα πεδία αυξάνουν την κατανάλωση πόρων εύρους ζώνης δικτύου και τον χρόνο μετάδοσης δεδομένων, ειδικά τα μεγάλα πεδία (όπως το varchar,
blob, κείμενο).
Το SELECT * δεν μπορεί να χρησιμοποιήσει το εργαλείο βελτιστοποίησης MySQL για να καλύψει τη βελτιστοποίηση ευρετηρίου (η στρατηγική "κάλυψης ευρετηρίου" που βασίζεται στο βελτιστοποιητή MySQL είναι εξαιρετικά γρήγορη και αποτελεσματική και είναι μια μέθοδος βελτιστοποίησης ερωτημάτων που συνιστάται ιδιαίτερα στον κλάδο)
SELECT Η <λίστα πεδίων> μπορεί να μειώσει τον αντίκτυπο των αλλαγών στη δομή του πίνακα.
2. Βελτιστοποίηση σελιδοποίησης
Η συνηθισμένη σελιδοποίηση διαρκεί σχετικά σύντομο χρόνο όταν ο όγκος των δεδομένων είναι μικρός.
Εάν ο όγκος των δεδομένων γίνει μεγάλος, φτάνοντας τα εκατομμύρια ή και δεκάδες εκατομμύρια, η συνηθισμένη σελιδοποίηση θα διαρκέσει πολύ χρόνο.
Πώς να βελτιστοποιήσετε Μπορείτε να τροποποιήσετε την παραπάνω δήλωση SQL σε ένα δευτερεύον ερώτημα.
Αρχικά ζητάμε την τιμή του πρωτεύοντος κλειδιού που αντιστοιχεί στην πρώτη παράμετρο του ορίου και, στη συνέχεια, φιλτράρουμε και περιορίζουμε με βάση αυτήν την τιμή του πρωτεύοντος κλειδιού, έτσι ώστε η αποτελεσματικότητα να είναι ταχύτερη. Ωστόσο, αυτή η μέθοδος λειτουργεί μόνο εάν τα αναγνωριστικά είναι σε θετική σειρά.
Ωστόσο, το αποτέλεσμα του υποερωτήματος θα δημιουργήσει έναν νέο πίνακα, ο οποίος θα επηρεάσει την απόδοση. Επιπλέον, αυτή η μέθοδος εφαρμόζεται μόνο όταν το ID είναι σε θετική σειρά. Σε σύνθετα σενάρια σελιδοποίησης, είναι συχνά απαραίτητο να φιλτράρετε τα αναγνωριστικά που πληρούν τις συνθήκες μέσω των συνθηκών φιλτραρίσματος Αυτή τη στιγμή, τα αναγνωριστικά είναι διακριτά και ασυνεχή.
3. Κάνετε λιγότερες ενώσεις
Εγχειρίδιο ανάπτυξης Alibaba:
Μπορείτε να διαβάσετε τη συζήτηση στο Zhihu:
https://www.zhihu.com/question/68258877https://www.zhihu.com/question/682588774. Συνιστάται να μην χρησιμοποιείτε ξένα κλειδιά και καταρράκτες
Εγχειρίδιο Alibaba Java Development:
5. Επιλέξτε τον κατάλληλο τύπο πεδίου
6. Προσπαθήστε να χρησιμοποιήσετε UNION ALL αντί για UNION
Το UNION θα τοποθετήσει όλα τα δεδομένα των δύο συνόλων αποτελεσμάτων σε έναν προσωρινό πίνακα και στη συνέχεια θα εκτελέσει τη λειτουργία κατάργησης διπλότυπων, η οποία είναι πιο χρονοβόρα και καταναλώνει περισσότερους πόρους CPU.
Το UNION ALL δεν θα αφαιρεί πλέον το σύνολο των αποτελεσμάτων και τα δεδομένα που λαμβάνονται περιέχουν διπλότυπα στοιχεία.
Ωστόσο, εάν τα διπλότυπα δεδομένα δεν επιτρέπονται στο πραγματικό επιχειρηματικό σενάριο, το UNION μπορεί να συνεχίσει να χρησιμοποιείται.
7. Λειτουργίες παρτίδας
Για ενημερώσεις δεδομένων στη βάση δεδομένων, εάν μπορούν να χρησιμοποιηθούν ομαδικές λειτουργίες, χρησιμοποιήστε τις όσο το δυνατόν περισσότερο για να μειώσετε τον αριθμό των αιτημάτων της βάσης δεδομένων και να βελτιώσετε την απόδοση.
8. Χρησιμοποιήστε σωστά τα ευρετήρια
Υπάρχει πολύ περιεχόμενο σε αυτή την ενότητα, το οποίο θα παρουσιαστεί αργότερα σε ξεχωριστό ιστολόγιο.
binlog (το δυαδικό αρχείο καταγραφής είναι ένα δυαδικό αρχείο καταγραφής) καταγράφει κυρίως όλες τις λειτουργίες που έχουν αλλάξει στη βάση δεδομένων MSQL (όλες οι δηλώσεις DDL και DML που εκτελούνται από τη βάση δεδομένων), συμπεριλαμβανομένων των αλλαγών στη δομή του πίνακα (CREATE, ALTER, DROP TABLE.), δεδομένων πίνακα τροποποιήσεις ( INSERT.UPDATE, DELETE..), αλλά δεν περιλαμβάνει SELECT, SHOW και άλλες λειτουργίες που δεν προκαλούν αλλαγές στη βάση δεδομένων.
Μπορείτε να χρησιμοποιήσετε την εντολή show binary logs για να προβάλετε μια λίστα με όλα τα δυαδικά αρχεία καταγραφής:
Υπάρχουν 3 τύποι μεθόδων δυαδικής εγγραφής:
Σε σύγκριση με τη λειτουργία γραμμής, το αρχείο καταγραφής στη λειτουργία δήλωσης είναι μικρότερο, η πίεση IO του δίσκου είναι επίσης μικρότερη και η απόδοση είναι καλύτερη. Ωστόσο, η ακρίβειά του είναι χειρότερη από τη λειτουργία γραμμής.
Πριν από την MySQL 5.1.5, η μορφή του binlog ήταν μόνο STATEMENT 5.1.5. Πριν από την MySQL 5.7.7, η λειτουργία δήλωσης χρησιμοποιήθηκε από προεπιλογή. Το MySQL5.7.7 χρησιμοποιεί τη λειτουργία γραμμής από προεπιλογή.
Μπορείτε να χρησιμοποιήσετε μεταβλητές εμφάνισης όπως "%binlog format%" για να δείτε τη μορφή που χρησιμοποιείται από το binlog
Το κύριο σενάριο εφαρμογής του binlog είναι το master-slave, το master-slave και το master-slave είναι όλα αδιαχώριστα από το binlog για τον συγχρονισμό δεδομένων και τη διασφάλιση της συνέπειας.
Η αρχή της αναπαραγωγής master-slave φαίνεται στο παρακάτω σχήμα:
1. Η κύρια βιβλιοθήκη εγγράφει τις αλλαγές στα δεδομένα στη βάση δεδομένων σε binlog
2. Συνδέστε τη βοηθητική βιβλιοθήκη με την κύρια βιβλιοθήκη
3. Η υποτελής βιβλιοθήκη θα δημιουργήσει ένα νήμα I0 για να ζητήσει το ενημερωμένο binlog από την κύρια βιβλιοθήκη.
4. Η κύρια βιβλιοθήκη θα δημιουργήσει ένα νήμα dump binlog για να στείλει το binlog και το νήμα I/0 στη slave βιβλιοθήκη είναι υπεύθυνο για τη λήψη 5. Το νήμα I/0 της slave βιβλιοθήκης θα γράψει το νήμα binlog στο ρελέ. κούτσουρο.
6. Διαβάστε το αρχείο καταγραφής αναμετάδοσης από το νήμα SQL της βιβλιοθήκης και συγχρονίστε τα δεδομένα τοπικά (δηλαδή, εκτελέστε ξανά την SQL)
Για τη μηχανή αποθήκευσης InnoDB, κατά την εκτέλεση μιας συναλλαγής, το αρχείο καταγραφής θα εγγραφεί πρώτα στην binlogcache Μόνο όταν υποβληθεί η συναλλαγή, το αρχείο καταγραφής binlogcache θα παραμείνει στο αρχείο binlogcache. Η εγγραφή στη μνήμη είναι πιο γρήγορη και αυτό γίνεται επίσης για λόγους αποτελεσματικότητας.
Επειδή το binlog μιας συναλλαγής δεν μπορεί να διαχωριστεί, ανεξάρτητα από το πόσο μεγάλη είναι η συναλλαγή, πρέπει να γραφτεί μία φορά, επομένως το σύστημα θα εκχωρήσει ένα μπλοκ μνήμης σε κάθε νήμα ως κρυφή μνήμη binlog. Μπορούμε να ελέγξουμε το μέγεθος binlogcache ενός μεμονωμένου νήματος μέσω της παραμέτρου binlog_cache_size Εάν το περιεχόμενο αποθήκευσης υπερβαίνει αυτήν την παράμετρο, πρέπει να αποθηκευτεί προσωρινά στο δίσκο (swap).
Λοιπόν, πότε το binlog ξεπλένεται στο δίσκο Μπορείτε να ελέγξετε τον χρονισμό έκπλυσης biglog μέσω της παραμέτρου sync_binlog Το εύρος τιμών είναι 0-N και η προεπιλογή είναι 0:
·0: Καμία υποχρεωτική απαίτηση, το σύστημα θα αποφασίσει πότε θα γράψει στο δίσκο.
·1: Κάθε φορά που υποβάλλεται μια συναλλαγή, το binlog πρέπει να γράφεται στο δίσκο:
·N: Το Binlog θα εγγράφεται στο δίσκο κάθε N συναλλαγές.Κίνδυνος απώλειας
Πριν από το MySQL5.7, η προεπιλεγμένη τιμή του sync_binlog ήταν 0. Μετά το MySQL5.7, η προεπιλεγμένη τιμή του sync_binlog είναι 1. Γενικά, δεν συνιστάται να ορίσετε την τιμή του sync_binlog σε 0. Εάν οι απαιτήσεις απόδοσης είναι σχετικά υψηλές ή παρουσιαστεί συμφόρηση IO του δίσκου, η τιμή του sync_binlog μπορεί να αυξηθεί κατάλληλα, ωστόσο, αυτό θα αυξήσει τον κίνδυνο απώλειας δεδομένων.
Όταν αντιμετωπίζετε τις ακόλουθες τρεις καταστάσεις, η MySQL θα δημιουργήσει εκ νέου ένα νέο αρχείο καταγραφής και ο σειριακός αριθμός του αρχείου θα αυξηθεί.
Γνωρίζουμε ότι η μηχανή αποθήκευσης InnoD8 διαχειρίζεται τον χώρο αποθήκευσης σε μονάδες σελίδων Τα δεδομένα που εισάγουμε στη MySQL υπάρχουν τελικά στη σελίδα. Προκειμένου να μειωθεί η επιβάρυνση του δίσκου IO, υπάρχει επίσης μια περιοχή που ονομάζεται Buffer Pool, η οποία υπάρχει στη μνήμη. Όταν η σελίδα που αντιστοιχεί στα δεδομένα μας δεν υπάρχει στο Buffer Pool, το MSQL θα αποθηκεύσει πρώτα τη σελίδα στο δίσκο στο Buffer Pool, έτσι ώστε αργότερα να λειτουργήσουμε απευθείας τη σελίδα στο Buffer Pool, κάτι που βελτιώνει σημαντικά την απόδοση ανάγνωσης και εγγραφής .
Μετά τη δέσμευση μιας συναλλαγής, οι τροποποιήσεις μας στην αντίστοιχη σελίδα στο Buffer Pool ενδέχεται να μην παραμείνουν στο δίσκο. Αυτή τη στιγμή, εάν η MySQL διακοπεί ξαφνικά, θα εξαφανιστούν άμεσα οι αλλαγές σε αυτήν τη συναλλαγή;
Προφανώς όχι, αν ναι, προφανώς θα παραβίαζε τη διάρκεια της συναλλαγής.
Η μηχανή MySQLInnoDB χρησιμοποιεί το αρχείο καταγραφής επανάληψης για να διασφαλίσει την ανθεκτικότητα των συναλλαγών. Το κύριο πράγμα που κάνει το redo log είναι να καταγράφει τις τροποποιήσεις της σελίδας, όπως πόσα byte έχουν τροποποιηθεί σε μια συγκεκριμένη μετατόπιση σε μια συγκεκριμένη σελίδα και ποιο είναι το συγκεκριμένο τροποποιημένο περιεχόμενο. Κάθε εγγραφή στο αρχείο καταγραφής επανάληψης περιέχει τον αριθμό χώρου πίνακα, τον αριθμό σελίδας δεδομένων, τη μετατόπιση, τα συγκεκριμένα τροποποιημένα δεδομένα και μπορεί ακόμη και να καταγράφει το μήκος των τροποποιημένων δεδομένων (ανάλογα με τον τύπο του αρχείου καταγραφής επανάληψης).
Όταν ολοκληρωθεί η συναλλαγή, θα ξεπλύνουμε το αρχείο καταγραφής επανάληψης στο δίσκο σύμφωνα με τη στρατηγική έκπλυσης. Με αυτόν τον τρόπο, ακόμη και αν η MySQL διακοπεί, τα δεδομένα που απέτυχαν να εγγραφούν στο δίσκο μπορούν να ανακτηθούν μετά την επανεκκίνηση, διασφαλίζοντας έτσι την ανθεκτικότητα. της συναλλαγής. Με άλλα λόγια, το αρχείο καταγραφής επανάληψης δίνει δυνατότητες ανάκτησης σφαλμάτων MySQL.
Το Redo Log καταγράφει όλες τις λειτουργίες τροποποίησης στη βάση δεδομένων. Όταν η βάση δεδομένων εκτελεί λειτουργίες εγγραφής (ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ), αυτές οι λειτουργίες πρώτα θα καταγραφούν στο αρχείο καταγραφής επανάληψης και στη συνέχεια θα εφαρμοστούν στο αρχείο δεδομένων. Με αυτόν τον τρόπο, ακόμη και αν το σύστημα αποτύχει πριν ολοκληρωθεί η εγγραφή της λειτουργίας τροποποίησης δεδομένων στο δίσκο, το Redo Log μπορεί να διασφαλίσει ότι τα δεδομένα δεν θα χαθούν. Κατά την ανάκτηση, η βάση δεδομένων θα επαναλάβει αυτές τις ημιτελείς λειτουργίες τροποποίησης από το αρχείο καταγραφής επανάληψης για να διασφαλίσει τη συνοχή των δεδομένων.
Το Redo Log βοηθά τη βάση δεδομένων να επανέλθει σε σταθερή κατάσταση μετά από κατάρρευση του συστήματος ή απροσδόκητη διακοπή ρεύματος. Κατά τη διαδικασία ανάκτησης, η βάση δεδομένων θα ελέγξει τις εγγραφές στο αρχείο καταγραφής επανάληψης και θα εφαρμόσει εκ νέου όλες τις τροποποιήσεις δεδομένων που υποβλήθηκαν αλλά δεν συνεχίζονται στα αρχεία δεδομένων για να ανακτήσει τα δεδομένα.
Προκειμένου να βελτιωθεί η απόδοση των λειτουργιών εγγραφής, οι βάσεις δεδομένων χρησιμοποιούν συχνά μηχανισμούς προσωρινής αποθήκευσης (όπως πισίνες buffer) για να αποθηκεύουν προσωρινά τις λειτουργίες τροποποίησης στη μνήμη αντί να τις γράφουν αμέσως στο δίσκο. Η ύπαρξη του Redo Log καθιστά δυνατό αυτόν τον μηχανισμό αποθήκευσης στην κρυφή μνήμη, επειδή εφόσον διασφαλίζεται ότι το Redo Log διατηρείται, δεν υπάρχει κίνδυνος απώλειας δεδομένων ακόμα και αν τα δεδομένα στη μνήμη cache δεν έχουν γραφτεί στο δίσκο.
Κατά τη διεξαγωγή μιας συναλλαγής, το αρχείο καταγραφής επανάληψης στην προσωρινή μνήμη καταγραφής θα ξεπλυθεί στο δίσκο. Μπορείτε να χρησιμοποιήσετε το innodb_flush_log_at
δέσμευση ελέγχου παραμέτρων. Πρέπει να δώσουμε προσοχή στον ορισμό της σωστής πολιτικής έκπλυσης innodb_flush_log_at_trx_commit Ανάλογα με τη στρατηγική έκπλυσης που έχει ρυθμιστεί στη MySQL, ενδέχεται να υπάρχουν μικρά προβλήματα απώλειας δεδομένων μετά τη διακοπή λειτουργίας της MySQL.
innodb_flush_log_at_trx_commit
Είναι μια σημαντική παράμετρος διαμόρφωσης στη μηχανή αποθήκευσης MySQL InnoDB Καθορίζει τις στρατηγικές ξεπλύματος (flush) και εγγραφής (εγγραφής) του αρχείου καταγραφής κατά την υποβολή μιας συναλλαγής, επηρεάζοντας έτσι τη διάρκεια και την απόδοση των δεδομένων. Έχει τρεις τιμές, δηλαδή 0, 1 και 2. Κάθε τιμή αντιπροσωπεύει μια διαφορετική στρατηγική βουρτσίσματος.
innodb_flush_log_at_trx_commit = 0
innodb_flush_log_at_trx_commit = 1
innodb_flush_log_at_trx_commit = 2
Σύνοψη της στρατηγικής του πινέλου
1. Το αρχείο καταγραφής επανάληψης εγγράφεται στην προσωρινή μνήμη καταγραφής, αλλά δεν έχει γραφτεί ακόμη στη μνήμη cache της σελίδας Αυτή τη στιγμή, η βάση δεδομένων διακόπτεται και συμβαίνει απώλεια δεδομένων (αυτή η απώλεια δεδομένων μπορεί να προκύψει όταν η τιμή της πολιτικής flush innodb_flush log_at trx_commit είναι. 0);
2. Το αρχείο καταγραφής επανάληψης έχει γραφτεί στη μνήμη cache της σελίδας, αλλά δεν έχει εγγραφεί ακόμη στο δίσκο Το λειτουργικό σύστημα θα διακοπεί και ενδέχεται να προκύψει απώλεια δεδομένων (αυτή η απώλεια δεδομένων μπορεί να συμβεί όταν η τιμή της πολιτικής έκπλυσης innodb2 flush log_at trx_commit είναι. 2).
Αναίρεση αρχείου καταγραφής (rollback log) είναι ένα αρχείο καταγραφής που χρησιμοποιείται στο σύστημα βάσης δεδομένων για την καταγραφή των λειτουργιών τροποποίησης δεδομένων. Το αρχείο καταγραφής αναίρεσης διαδραματίζει βασικό ρόλο στην επαναφορά της συναλλαγής Μέσω του αρχείου καταγραφής αναίρεσης, τα δεδομένα μπορούν να αποκατασταθούν στην κατάσταση πριν από την έναρξη της συναλλαγής, διασφαλίζοντας έτσι την ατομικότητα της συναλλαγής.
Η ατομικότητα μιας συναλλαγής σημαίνει ότι όλες οι λειτουργίες της συναλλαγής είτε εκτελούνται όλες είτε δεν εκτελούνται καμία. Το Undo Log διασφαλίζει την ατομικότητα των συναλλαγών μέσω των ακόλουθων μηχανισμών:
Εγγραφή λειτουργιών αναίρεσης Κατά την εκτέλεση της συναλλαγής, οποιαδήποτε λειτουργία τροποποίησης των δεδομένων θα καταγράφει την αντίστοιχη λειτουργία αναίρεσης στο αρχείο καταγραφής αναίρεσης πριν από την πραγματική τροποποίηση. Για παράδειγμα, εάν μια συναλλαγή ενημερώνει την τιμή μιας σειράς εγγραφών, η παλιά τιμή θα καταγραφεί στο αρχείο καταγραφής αναίρεσης πριν από την ενημέρωση.
Συναλλαγή επαναφοράς Εάν η συναλλαγή αποτύχει για κάποιο λόγο (όπως σφάλμα ή ρητή επαναφορά), το σύστημα βάσης δεδομένων διαβάζει το αρχείο καταγραφής αναίρεσης και επαναφέρει τα δεδομένα στην κατάσταση πριν από την έναρξη της συναλλαγής σύμφωνα με την καταγεγραμμένη λειτουργία αναίρεσης. Με αυτόν τον τρόπο, μπορείτε να διασφαλίσετε ότι η αποτυχημένη συναλλαγή δεν έχει καμία επίδραση στη βάση δεδομένων, διασφαλίζοντας έτσι την ατομικότητα της συναλλαγής.
Παραθέτω, αναφορά: