Απαιτήσεις: Όταν χρησιμοποιείτε GUID ως ευρετήρια συνάθροισης πρωτεύοντος κλειδιού, συνιστάται η χρήση παραγγελθέντων GUID, επειδή τα μη ταξινομημένα GUID θα προκαλέσουν σπατάλη χώρου και την επακόλουθη μείωση της απόδοσης ανάγνωσης και εγγραφής.
Αναθεώρηση:
Τιμή GUID βάσης δεδομένων
Οι τύποι δεδομένων καθολικά μοναδικού αναγνωριστικού (GUID) στον SQL Server αντιπροσωπεύονται από τύπους δεδομένωνμοναδικό αναγνωριστικό, το οποίο αποθηκεύει μια δυαδική τιμή 16 byte. Το GUID είναι ένας δυαδικός αριθμός του οποίου ο κύριος σκοπός είναι ως αναγνωριστικό που πρέπει να είναι μοναδικό σε ένα δίκτυο με πολλούς υπολογιστές σε πολλές τοποθεσίες.
Τόσο το Guid όσο και το SqlGuid έχουν τρόπους σύγκρισης διαφορετικών τιμών GUID. Η υλοποίηση SqlGuid χρησιμοποιεί συμπεριφορά SQL Server,Τα τελευταία έξι byte της τιμής είναι τα πιο σημαντικά。
Τα διαδοχικά GUID είναι εγγενώς μαντέψιμα, επομένως μην τα χρησιμοποιείτε σε περιβάλλοντα ευαίσθητα στην ασφάλεια。
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η βάση δεδομένων ταξινομείται από το GUID
Η βάση δεδομένων του SQL Server έχει έναΝέοSequentialId()για να δημιουργήσετε ένα διατεταγμένο GUID. Κατά τη δημιουργία ενός πίνακα, μπορείτε να τον ορίσετε ως την προεπιλεγμένη τιμή ενός πεδίου τύπου GUID και να δημιουργήσετε αυτόματα την τιμή του πρωτεύοντος κλειδιού κατά την εισαγωγή νέων δεδομένων (αυτή η συνάρτηση μπορεί να χρησιμοποιηθεί μόνο ως προεπιλεγμένη τιμή του πεδίου, όχι απευθείας στην SQL).
Παράδειγμα:
Η συνάρτηση NewSequentialId() μπορεί να χρησιμοποιηθεί μόνο σε βάσεις δεδομένων, αν και η τεκμηρίωση MSDN της Microsoft αναφέρει ότι το NEWSEQUENTIALID είναι ένα περιτύλιγμα για τη συνάρτηση UuidCreateSequential των Windows.
Συμβουλή: Μην χρησιμοποιείτε τη λειτουργία εάν πρόκειται για ζήτημα εμπιστευτικότητας. ΕπειδήΕίναι δυνατό να μαντέψετε την τιμή του επόμενου GUID που δημιουργείταιγια να αποκτήσετε πρόσβαση στα δεδομένα που σχετίζονται με αυτό το GUID.
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Το .NET δημιουργεί ένα ταξινομημένο GUID
Η συνάρτηση UuidCreateSequential εξαρτάται από το υπολογιστικό υλικό της μεθόδουΤα τελευταία 12 bit είναι στην πραγματικότητα η διεύθυνση MAC της κάρτας δικτύου。
Ο κωδικός έχει ως εξής:
Τα αποτελέσματα έχουν ως εξής:
Έλλειψη:
- Αυτή η μέθοδος απαιτεί από το DllImport να καλεί τη βιβλιοθήκη των Windows, επομένως δεν είναι cross-platform.
- Δεν μπορεί να χρησιμοποιηθεί σε περιβάλλον συμπλέγματος, όπου πολλά μηχανήματα γράφουν στην ίδια βάση δεδομένων, επειδή τα προκύπτοντα GUID θα είναι διαφορετικά μεταξύ τους (υπολογιστικό υλικό που εξαρτάται από τη λειτουργία), με αποτέλεσμα τον κατακερματισμό του ευρετηρίου.
- Εάν ο διακομιστής των Windows επανεκκινηθεί, το GUID μπορεί να ξεκινήσει σε χαμηλότερο εύρος, με αποτέλεσμα τον κατακερματισμό του ευρετηρίου.
Αναφορά:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Εάν χρησιμοποιείτε ένα πρόγραμμα .NET για να δημιουργήσετε ένα SQL SERVER παραγγελθέν GUID, συνιστάται να χρησιμοποιήσετε μια βιβλιοθήκη κλάσεων άλλου κατασκευαστή:RT. Χτένα, η εντολή nuget έχει ως εξής:
Ο κωδικός έχει ως εξής:
Απόδοση:
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Ταξινομημένα και μη ταξινομημένα τμήματα ευρετηρίου πρωτεύοντος κλειδιού GUID
Ξεκινήστε δημιουργώντας δύο πίνακες με το ακόλουθο σενάριο:
Το τεστ εισάγει 100,000 κομμάτια δεδομένων και ο κώδικας έχει ως εξής:
Τα αποτελέσματα των δοκιμών είναι τα εξής:
| GUID | Χρόνος που καταναλώνεται (ms) | Πυκνότητα σάρωσης [Best Count: Actual Count], όσο υψηλότερη είναι η τιμή, τόσο το καλύτερο | Κατακερματισμός λογικής σάρωσης, όσο χαμηλότερη είναι η τιμή, τόσο το καλύτερο | Μέση πυκνότητα σελίδων (πλήρης) (Μ.Ο. Πυκνότητα σελίδας (πλήρης), όσο μεγαλύτερη είναι η τιμή, τόσο το καλύτερο | | Μη ταξινομημένο GUID | 13367 | 12.58% [61:485] | 98.97% | 63.66% | | GUID παραγγελίας | 14139 | 100.00% [39:39] | 0.32% | 99.61% |
Η δοκιμή εισάγει ξανά 1 εκατομμύριο κομμάτια δεδομένων, με ένα GUID εκτός σειράς να λαμβάνει 135203 ms και ένα ταξινομημένο GUID να λαμβάνει 135134 ms. Η πληρότητα του αποθηκευτικού χώρου έχει ως εξής:
Μη ταξινομημένο GUID: 36.547 MB GUID παραγγελίας: 26.609 MB
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
(Τέλος)
|