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

Άποψη: 5609|Απάντηση: 2

MongoDB Προβολή και δημιουργία ευρετηρίων

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 11/2/2022 5:46:29 μ.μ. | | | |
Ευρετήριο MongoDB

Χωρίς ευρετήρια, το MongoDB θα έπρεπε να σαρώσει κάθε αρχείο της συλλογής και να επιλέξει εκείνες τις εγγραφές που πληρούν τα κριτήρια ερωτήματος κατά την ανάγνωση δεδομένων.

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

Τα ευρετήρια είναι ειδικές δομές δεδομένων που αποθηκεύονται σε μια συλλογή δεδομένων που μπορούν εύκολα να διαβαστούν σε ένα ευρετήριο και τα ευρετήρια είναι μια δομή που ταξινομεί τις τιμές μιας ή περισσότερων στηλών σε έναν πίνακα βάσης δεδομένων.

Αναθεώρηση:

Κοινές εντολές ερωτημάτων MongoDB
https://www.itsvse.com/thread-10169-1-1.html

Υποβολή ερωτήματος στο σχέδιο εκτέλεσης

Παραδείγματα δηλώσεων:

Χωρίς τη δημιουργία ευρετηρίου (winningPlan:COLLSCAN), όπως φαίνεται στο παρακάτω σχήμα:



explain() μπορεί επίσης να λάβει διαφορετικές παραμέτρους και μπορείτε να προβάλετε ένα πιο λεπτομερές σχέδιο ερωτήματος ορίζοντας διαφορετικές παραμέτρους.

Οι παράμετροι περιλαμβάνουν:queryPlanner (προεπιλογή)、executionStats、allPlansExecution

Εκτελέστε το explain("executionStats") και θα διαπιστώσετε ότι υπάρχουν περισσότερα στατιστικά στοιχεία στο σχέδιο εκτέλεσης.

παράμετροςέννοια
totalKeysExaminedΑριθμός σαρώσεων ευρετηρίου
σύνολοΈγγραφαΕξετάστηκανΑριθμός σαρώσεων εγγράφων
nΕπιστράφηκεΟ αριθμός των αποτελεσμάτων που επιστράφηκαν
εκτέλεσηTimeMillisΗ εκτέλεση είναι χρονοβόρα
εκτέλεσηΕπιτυχίαΕάν η εκτέλεση ήταν επιτυχής

Δημιουργία ευρετηρίου

Το MongoDB χρησιμοποιεί τη μέθοδο createIndex() για τη δημιουργία ευρετηρίων.

Σημειώστε ότι πριν από την έκδοση 3.0.0, η μέθοδος δημιουργίας ευρετηρίου ήταν db.collection.ensureIndex() και οι νεότερες εκδόσεις χρησιμοποιούσαν τη μέθοδο db.collection.createIndex().

Δημιουργία ενός μοναδικού ευρετηρίου


Δημιουργία σύνθετου ευρετηρίου

Στη σύνταξη, η τιμή κλειδιού είναι το πεδίο ευρετηρίου που θέλετε να δημιουργήσετε, το 1 καθορίζεται για τη δημιουργία ευρετηρίου με αύξουσα σειρά και εάν θέλετε να δημιουργήσετε ένα ευρετήριο με φθίνουσα σειρά, μπορείτε να καθορίσετε -1.φόντο για να καθορίσετε ότι τα ευρετήρια δημιουργούνται στο παρασκήνιο, δηλαδή προσθέστε την προαιρετική παράμετρο "φόντο". Το "φόντο" είναι από προεπιλογή false.

Ευρετήρια ερωτημάτων

Η εντολή είναι η εξής:



Διαγραφή του ευρετηρίου

Διαγραφή όλων των ευρετηρίων

Διαγραφή του καθορισμένου ευρετηρίου

(Τέλος)




Προηγούμενος:Πώς να περιορίσετε τους Ταϊβανέζους χρήστες από την εγγραφή, να δημοσιεύσετε πληροφορίες κατά βούληση και να ζητήσετε συμβουλές για το πώς να γράφουν.
Επόμενος:[Πραγματική μάχη]. Το NET/C# εξάγει την προσωρινή μνήμη χρησιμοποιώντας το ασαφές ερώτημα StackExchange.Redis
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 11/2/2022 5:49:16 μ.μ. |
Αργή διαδικασία ανάλυσης ερωτημάτων:

1. Χρησιμοποιήστε το αργό αρχείο καταγραφής ερωτημάτων (system.profile) για να βρείτε δηλώσεις που υπερβαίνουν τα 200ms

2. Στη συνέχεια, χρησιμοποιήστε το .explain() για να αναλύσετε τον αριθμό των επηρεαζόμενων σειρών και να αναλύσετε γιατί υπερβαίνει τα 200ms

3. Αποφασίστε εάν πρέπει να προσθέσετε ένα ευρετήριο

Ενεργοποίηση αργού ερωτήματος:


Παράμετρος:

0: Κλειστό, δεν συλλέγονται δεδομένα.
1: Συλλέξτε αργά δεδομένα ερωτήματος, η προεπιλογή είναι 100 χιλιοστά του δευτερολέπτου.
2: Συλλέξτε όλα τα δεδομένα

Ελέγξτε τα αποτελέσματα:


Σημείωση: Τα ευρετήρια μπορούν βασικά να ειπωθούν ότι είναι μόνιμα στη μνήμη, εάν ο όγκος των δεδομένων φτάσει τα 100 εκατομμύρια, όσο μικρότερος είναι ο αριθμός των ευρετηρίων, τόσο το καλύτερο, γιατί θα καταλαμβάνει μεγάλη ποσότητα μνήμης. Σύμφωνα με το Διαδίκτυο, 1 εκατομμύριο ευρετήρια αντιπροσωπεύουν περίπου 50 εκατομμύρια μνήμη. Αν είναι 100 εκατομμύρια, τότε θα καταλάβει μνήμη 5G.

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

Mail To:help@itsvse.com