Εισαγωγή στους πίνακες με βελτιστοποίηση μνήμης
Οι πίνακες με βελτιστοποίηση μνήμης είναι πίνακες που δημιουργούνται με χρήση CREATE TABLE (Transact-SQL).
Από προεπιλογή, οι πίνακες που έχουν βελτιστοποιηθεί για τη μνήμη είναι πλήρως μόνιμοι. Όπως οι συναλλαγές σε (παραδοσιακούς) πίνακες που βασίζονται σε δίσκους, οι συναλλαγές σε πίνακες βελτιστοποιημένους για τη μνήμη είναι πλήρως ατομικές, συνεπείς, απομονωμένες και μόνιμες (ACID). Οι πίνακες που έχουν βελτιστοποιηθεί για τη μνήμη και οι εγγενώς μεταγλωττισμένες αποθηκευμένες διαδικασίες υποστηρίζουν μόνο ένα υποσύνολο των δυνατοτήτων Transact-SQL.
Από τον SQL Server 2016 και στη βάση δεδομένων SQL Azure, δεν υπάρχουν περιορισμοί στη συρραφή ή τις κωδικοσελίδες OLTP στη μνήμη.
Η κύρια μνήμη ενός πίνακα βελτιστοποιημένης μνήμης είναι η κύρια μνήμη. Διαβάστε σειρές από τον πίνακα από μνήμης και γράψτε αυτές τις γραμμές στη μνήμη. Ένα άλλο αντίγραφο των δεδομένων του πίνακα διατηρείται στο δίσκο, αλλά μόνο για λόγους διατήρησης. Για περισσότερες πληροφορίες σχετικά με τους μόνιμους πίνακες, ανατρέξτε στο θέμα Δημιουργία και διαχείριση χώρου αποθήκευσης αντικειμένων για βελτιστοποίηση μνήμης. Τα δεδομένα σε πίνακες βελτιστοποιημένης μνήμης διαβάζονται από το δίσκο μόνο κατά την ανάκτηση της βάσης δεδομένων (για παράδειγμα, μετά από επανεκκίνηση διακομιστή).
Για μεγαλύτερα κέρδη απόδοσης, το OLTP στη μνήμη υποστηρίζει μόνιμους πίνακες με μόνιμο λανθάνοντα χρόνο συναλλαγών. Οι καθυστερημένες μόνιμες συναλλαγές αποθηκεύονται στο δίσκο λίγο μετά την εκτέλεση της συναλλαγής και ο έλεγχος επιστρέφεται στον υπολογιστή-πελάτη. Σε αντάλλαγμα για βελτιωμένες επιδόσεις, οι δεσμευμένες συναλλαγές που δεν αποθηκεύονται στο δίσκο χάνονται σε περίπτωση κατάρρευσης ή ανακατεύθυνσης διακομιστή.
Εκτός από τους προεπιλεγμένους πίνακες βελτιστοποίησης μόνιμης μνήμης, ο SQL Server υποστηρίζει μη εγγεγραμμένους πίνακες βελτιστοποίησης μη μόνιμης μνήμης και τα δεδομένα τους δεν διατηρούνται στο δίσκο. Αυτό σημαίνει ότι οι συναλλαγές σε αυτούς τους πίνακες δεν απαιτούν IO δίσκου, αλλά εάν παρουσιαστεί αποτυχία διακομιστή ή ανακατεύθυνση, τα δεδομένα χάνονται.
Το OLTP στη μνήμη ενσωματώνεται με τον SQL Server για να παρέχει μια απρόσκοπτη εμπειρία σε όλες τις πτυχές, όπως η ανάπτυξη, η ανάπτυξη, η διαχειρισιμότητα και η δυνατότητα υποστήριξης. Μια βάση δεδομένων μπορεί να περιέχει τόσο αντικείμενα στη μνήμη όσο και αντικείμενα που βασίζονται σε δίσκο.
Οι γραμμές στον πίνακα που έχει βελτιστοποιηθεί για τη μνήμη έχουν εκδοθεί. Αυτό σημαίνει ότι κάθε σειρά στον πίνακα μπορεί να έχει πολλές εκδόσεις. Όλες οι εκδόσεις γραμμών διατηρούνται στην ίδια δομή δεδομένων πίνακα. Η διαχείριση εκδόσεων γραμμής χρησιμοποιείται για την ενεργοποίηση ταυτόχρονων αναγνώσεων και εγγραφών στην ίδια γραμμή. Για περισσότερες πληροφορίες σχετικά με τις ταυτόχρονες αναγνώσεις και εγγραφές στην ίδια γραμμή, ανατρέξτε στο θέμα Στοιχεία στον πίνακα βελτιστοποίησης μνήμης.
Κατά προσέγγιση βήματα και περιορισμοί χρήσης
Βήματα:
(1) Δημιουργήστε μια βάση δεδομένων και MEMORY_OPTIMIZED_DATA ομάδα αρχείων (αλλάξτε τη βάση δεδομένων προσθέστε ομάδα αρχείων, κάθε βάση δεδομένων μπορεί να έχει μόνο μία ομάδα αρχείων MEMORY_OPTIMIZED_DATA!!) ) (2) Προσθέστε έναν φάκελο στην ομάδα αρχείων για να αποθηκεύσετε τα αρχεία δεδομένων (μην δημιουργήσετε αυτόν τον φάκελο εκ των προτέρων, χρησιμοποιήστε την αλλαγή βάσης δεδομένων προσθήκη αρχείου() στην ομάδα αρχείων) (3) Δημιουργήστε μόνιμους/μη μόνιμους πίνακες βελτιστοποιημένης μνήμης (ο SQL Server 2014 διατηρείται από προεπιλογή) και πρέπει επίσης να ορίσετε ένα πρωτεύον κλειδί με βάση ένα μη συγκεντρωτικό ευρετήριο κατακερματισμού. Τα κατακερματισμένα ευρετήρια είναι ο μόνος υποστηριζόμενος τύπος ευρετηρίου σε πίνακες βελτιστοποιημένους για τη μνήμη. (4) Χρησιμοποιήστε τοπικά μεταγλωττισμένες αποθηκευμένες διαδικασίες: Οι πίνακες βελτιστοποιημένης μνήμης υποστηρίζουν τοπικά μεταγλωττισμένες αποθηκευμένες διαδικασίες, εφόσον αυτές οι αποθηκευμένες διαδικασίες αναφέρονται μόνο σε πίνακες βελτιστοποιημένους για τη μνήμη.
Όριο:
(1) Ο πίνακας βελτιστοποιημένης μνήμης πρέπει να τοποθετηθεί κάτω από τη βάση δεδομένων με την ομάδα αρχείων CONTAINS MEMORY_OPTIMIZED_DATA. (2) Ο πίνακας βελτιστοποιημένης μνήμης πρέπει να ορίζει ένα πρωτεύον κλειδί με βάση ένα μη συγκεντρωτικό ευρετήριο κατακερματισμού και ο πίνακας πρέπει να ορίζεταιΟ έλεγχος ξένου κλειδιού ή περιορισμού δεν υποστηρίζεται (3) Ο πίνακας βελτιστοποίησης μνήμης πρέπει να έχει αρκετή μνήμη, διαφορετικά λειτουργίες όπως η εισαγωγή ενημερώσεων θα αποτύχουν. (4) Ο SQL Server 2014 έχει πολλούς περιορισμούς σε αυτούς τους πίνακες. Για παράδειγμα, δεν υποστηρίζουν ξένα κλειδιά ή έλεγχο περιορισμών (που μοιάζει με τη μηχανή αποθήκευσης μνήμης της MySQL), αυτοίΤα πεδία IDENTITY ή οι ενεργοποιητές DML δεν υποστηρίζονται επίσης。
Χρησιμοποιήστε το σεμινάριο
Οι εκδόσεις της βάσης δεδομένων είναι οι εξής:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 25 Σεπ 2024 17:34:41 Πνευματικά δικαιώματα (C) 2022 Microsoft Corporation Enterprise Edition: Αδειοδότηση βασισμένη σε πυρήνα (64-bit) σε Linux (Ubuntu 22.04.4 LTS) <X64>
Αρχικά, δημιουργήστε μια βάση δεδομένων και μια ομάδα αρχείων με την ακόλουθη εντολή:
Εάν δεν δημιουργήσετε μια ομάδα με βελτιστοποίηση μνήμης, θα αναφερθεί ένα σφάλμα κατά τη δημιουργία ενός πίνακα με βελτιστοποίηση μνήμης:Δεν είναι δυνατή η δημιουργία πινάκων βελτιστοποιημένης μνήμης. Για να δημιουργήσετε πίνακες βελτιστοποιημένους για τη μνήμη, η βάση δεδομένων πρέπει να διαθέτει ένα MEMORY_OPTIMIZED_FILEGROUP που να είναι συνδεδεμένο και να έχει τουλάχιστον ένα κοντέινερ.
Δημιουργήστε δύο πίνακες βελτιστοποιημένους για μνήμη για δοκιμή, έναν μόνιμο και έναν μη μόνιμο, με την ακόλουθη εντολή:
Ο πίνακας βελτιστοποίησης μνήμης έχει δύο επιλογές (ΑΝΘΕΚΤΙΚΟΤΗΤΑ = SCHEMA_AND_DATA), (ΑΝΘΕΚΤΙΚΟΤΗΤΑ = SCHEMA_ONLY) Πίνακας αντοχής: ΑΝΘΕΚΤΙΚΟΤΗΤΑ =SCHEMA_AND_DATA Μη μόνιμος πίνακας: ΑΝΘΕΚΤΙΚΟΤΗΤΑ =SCHEMA_ONLY
Οι δοκιμές εισάγονται ξεχωριστά στον πίνακα βελτιστοποίησης μνήμης100.000 άρθρα(στην πραγματικότητα 100002 στοιχεία) δεδομένα, η εντολή είναι η εξής:
Η επιμονή χρειάζεται 28 δευτερόλεπτα για να ενεργοποιηθεί και 1 δευτερόλεπτο χωρίς επιμονή。
Αναφορά:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή. |