Όταν χρησιμοποιείτε τη mysql, μπορεί να διαπιστώσετε ότι παρόλο που ένας πίνακας διαγράφει πολλά δεδομένα, τα αρχεία δεδομένων και τα αρχεία ευρετηρίου του πίνακα είναι παράξενα μικρά. Αυτό συμβαίνει επειδή η mysql θα αφήσει πολλές τρύπες δεδομένων κατά τη διαγραφή δεδομένων (ειδικά Text και BLOB), οι οποίες θα καταλαμβάνουν το χώρο των αρχικών δεδομένων, επομένως το μέγεθος του αρχείου δεν αλλάζει. Αυτές οι τρύπες μπορεί να επαναχρησιμοποιηθούν στο μέλλον όταν εισάγονται δεδομένα και φυσικά μπορεί να παραμείνουν εκεί. Αυτή η τρύπα όχι μόνο αυξάνει το κόστος αποθήκευσης, αλλά μειώνει επίσης την αποτελεσματικότητα σάρωσης του πίνακα λόγω του κατακερματισμού των δεδομένων.
Σενάρια χρήσης:Εάν έχετε διαγράψει ένα μεγάλο μέρος του πίνακα ή εάν έχετε κάνει πολλές αλλαγές σε έναν πίνακα με γραμμές μεταβλητού μήκους (μία με στήλες VARCHAR, BLOB ή TEXT), θα πρέπει να χρησιμοποιήσετε τη ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΠΙΝΑΚΑ. Οι διαγραμμένες εγγραφές διατηρούνται στη συνδεδεμένη λίστα και οι επόμενες λειτουργίες INSERT επαναχρησιμοποιούν την παλιά θέση εγγραφής. Μπορείτε να χρησιμοποιήσετε το OPTIMIZE TABLE για να επαναπροσδιορίσετε τον αχρησιμοποίητο χώρο και να οργανώσετε τμήματα αρχείων δεδομένων. [Όταν διαγράφεται μεγάλος όγκος δεδομένων από τη βιβλιοθήκη σας, ενδέχεται να διαπιστώσετε ότι το μέγεθος του αρχείου δεδομένων δεν έχει μειωθεί. Αυτό οφείλεται στον κατακερματισμό που απομένει στο αρχείο δεδομένων μετά τη λειτουργία διαγραφής.
Στις περισσότερες ρυθμίσεις, δεν χρειάζεται να εκτελέσετε καθόλου το OPTIMIZE TABLE. Ακόμα κι αν κάνετε πολλές ενημερώσεις σε γραμμές μεταβλητού μήκους, δεν χρειάζεται να τις εκτελείτε συχνά, μία φορά την εβδομάδα ή μία φορά το μήνα, μόνο για συγκεκριμένους πίνακες.
Το OPTIMIZE TABLE λειτουργεί μόνο για πίνακες MyISAM, BDB και InnoDB.
Για πίνακες BDB, το OPTIMIZE TABLE αντιστοιχίζεται επί του παρόντος στον ΑΝΑΛΥΣΗ ΠΙΝΑΚΑ. Για πίνακες InnoDB, το OPTIMIZE TABLE αντιστοιχίζεται στο ALTER TABLE, το οποίο αναδημιουργεί τον πίνακα. Αναδημιουργήστε τις λειτουργίες, ενημερώστε τα στατιστικά ευρετηρίου και ελευθερώστε αχρησιμοποίητο χώρο σε ομαδοποιημένα ευρετήρια.
Σημείωση: Η MySQL κλειδώνει τον πίνακα κατά την εκτέλεση του OPTIMIZE TABLE.
Για το myisam, μπορείτε να χρησιμοποιήσετε απευθείας τον πίνακα βελτιστοποίησης table.name,Όταν πρόκειται για τη μηχανή InnoDB, θα αναφέρει "Ο πίνακας δεν υποστηρίζει βελτιστοποίηση, κάνοντας αναδημιουργία + ανάλυση" και υπό κανονικές συνθήκες, εάν κάνετε μετατροπή από myisam σε innodb, θα χρησιμοποιήσετε το alter table table.name engine='innodb' για μετατροπή και μπορείτε επίσης να το χρησιμοποιήσετε για βελτιστοποίηση.Επομένως, όταν πρόκειται για τη μηχανή InnoDB, μπορούμε να χρησιμοποιήσουμε alter table table.name engine='innodb' αντί για βελτιστοποίηση για βελτιστοποίηση。
Για να δείτε τα εφέ πριν και μετά, μπορείτε να χρησιμοποιήσετε την εντολή εμφάνισης κατάστασης πίνακα, όπως εμφάνιση κατάστασης πίνακα από [βάση δεδομένων] όπως '[table_name]'; Το data_free στο αποτέλεσμα επιστροφής είναι ο αποθηκευτικός χώρος που καταλαμβάνει το κενό.
Το σενάριο κελύφους που υλοποιεί την επισκευή πίνακα χρονομετρημένου ελέγχου παρτίδας MySQL και τον πίνακα βελτιστοποίησης πίνακα βελτιστοποίησης είναι το εξής:
Αρχικός:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|