Προγραμματισμός

Πώς λειτουργεί η ομαδοποίηση σύνδεσης ADO.Net;

Η σύνδεση με μια βάση δεδομένων είναι μια λειτουργία εντάσεως πόρων που συνήθως περιλαμβάνει μερικά βήματα. Θα πρέπει να δημιουργηθεί ένα κανάλι επικοινωνίας μεταξύ της εφαρμογής και της βάσης δεδομένων προτού συμβεί η αρχική χειραψία με το διακομιστή βάσης δεδομένων. Αυτό το κανάλι μπορεί να είναι είτε μια πρίζα είτε ένας επώνυμος σωλήνας. Μόλις πραγματοποιηθεί αυτή η σύνδεση και επιτευχθεί η αρχική χειραψία με τον διακομιστή, τα μεταδεδομένα σύνδεσης (πληροφορίες συμβολοσειράς σύνδεσης για σύνδεση στη βάση δεδομένων) αναλύονται και η σύνδεση με τη βάση δεδομένων ελέγχεται από τον διακομιστή βάσης δεδομένων.

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

Τι είναι ο συνδυασμός σύνδεσης;

Το Connection pooling είναι μια στρατηγική που χρησιμοποιείται για την ελαχιστοποίηση του κόστους που σχετίζεται με το άνοιγμα και το κλείσιμο συνδέσεων στη βάση δεδομένων. Σας επιτρέπει να επαναχρησιμοποιείτε συνδέσεις αντί να δημιουργείτε νέες συνδέσεις στη βάση δεδομένων όπως και όταν ζητούνται.

Η δεξαμενή σύνδεσης περιέχει μια συλλογή αδρανών, ανοιχτών, επαναχρησιμοποιήσιμων συνδέσεων. Το pooler διαχειρίζεται το pool σύνδεσης και διατηρεί ένα σύνολο ενεργών συνδέσεων για κάθε δεδομένο μεταδεδομένο σύνδεσης, πληροφορίες διαμόρφωσης σύνδεσης.

Λάβετε υπόψη ότι μπορείτε να έχετε πολλές ομάδες σύνδεσης στον ίδιο τομέα εφαρμογής. Δημιουργείται μια δεξαμενή σύνδεσης ανά μοναδική συμβολοσειρά σύνδεσης που χρησιμοποιείτε για τη σύνδεση στη βάση δεδομένων και όχι ανά βάση δεδομένων. Έτσι, την πρώτη φορά που συνδέεστε σε μια βάση δεδομένων με μια συγκεκριμένη συμβολοσειρά σύνδεσης, δημιουργείται μια νέα ομάδα σύνδεσης. Όταν συνδέεστε στην ίδια βάση δεδομένων με την ίδια συμβολοσειρά σύνδεσης την επόμενη φορά, δεν δημιουργείται νέα ομάδα συγκέντρωσης, αλλά, η υπάρχουσα ομάδα σύνδεσης επαναχρησιμοποιείται.

Θα πρέπει να σημειωθεί ότι όταν χρησιμοποιείτε Ολοκληρωμένη Ασφάλεια, θα δημιουργηθεί μια ομάδα σύνδεσης για κάθε χρήστη που έχει πρόσβαση στο σύστημα πελάτη, δηλαδή οι συνδέσεις συγκεντρώνονται ανά Windows Identity. Από αυτήν την άποψη, το MSDN δηλώνει: "Όταν ανοίγει μια σύνδεση για πρώτη φορά, δημιουργείται μια ομάδα συγκέντρωσης με βάση έναν αλγόριθμο ακριβούς αντιστοίχισης που συσχετίζει την ομάδα με τη συμβολοσειρά σύνδεσης στη σύνδεση. Κάθε ομάδα συνδέσεων σχετίζεται με μια ξεχωριστή συμβολοσειρά σύνδεσης. Όταν ανοίγει μια νέα σύνδεση, εάν η συμβολοσειρά σύνδεσης δεν αντιστοιχεί ακριβώς σε μια υπάρχουσα ομάδα, δημιουργείται μια νέα ομάδα. "

Διαμόρφωση ομαδοποίησης σύνδεσης

Πώς ελέγχετε τη συμπεριφορά συγκέντρωσης σύνδεσης; Λοιπόν, μπορείτε να διαχειριστείτε ομάδες σύνδεσης χρησιμοποιώντας συγκεκριμένες λέξεις-κλειδιά στη συμβολοσειρά σύνδεσης. Τα σημαντικά περιλαμβάνουν τα εξής:

  • ConnectionTimeout - χρησιμοποιείται για τον καθορισμό της περιόδου αναμονής (σε δευτερόλεπτα) όταν απαιτείται νέα σύνδεση βάσης δεδομένων. Η προεπιλεγμένη τιμή είναι 15.
  • MinPoolSize - αντιπροσωπεύει τον ελάχιστο αριθμό συνδέσεων στην πισίνα.
  • MaxPoolSize - αντιπροσωπεύει τον μέγιστο αριθμό συνδέσεων στην ομάδα. Η προεπιλεγμένη τιμή είναι 100.
  • Συγκέντρωση - αυτό ελέγχει εάν ο συνδυασμός σύνδεσης είναι ενεργοποιημένος ή απενεργοποιημένος και μπορεί να έχει τιμή true of false. Όταν αυτό οριστεί ως αληθές, η ζητούμενη σύνδεση ανακτάται από την κατάλληλη ομάδα σύνδεσης.

Το ακόλουθο απόσπασμα κώδικα απεικονίζει πώς μπορεί να ρυθμιστεί η δεξαμενή σύνδεσης χρησιμοποιώντας συμβολοσειρά σύνδεσης:

string connectionString = "Πηγή δεδομένων = localhost; Αρχικός Κατάλογος = Δείγμα; Ολοκληρωμένη ασφάλεια = SSPI; Χρονικό όριο σύνδεσης = 30; Διάρκεια σύνδεσης = 0; Ελάχιστο μέγεθος συγκέντρωσης = 0; Μέγιστο μέγεθος συγκέντρωσης = 100; Συγκέντρωση = αλήθεια;";

χρησιμοποιώντας (σύνδεση SqlConnection = νέο SqlConnection (connectionString))

{

σύνδεση. Ανοιχτό ();

// Γράψτε κώδικα εδώ για να εκτελέσετε λειτουργίες CRUD στη βάση δεδομένων δειγμάτων

}

Μπορείτε να παρακολουθήσετε τη συμπεριφορά συγκέντρωσης συνδέσεων εκτελώντας τις αποθηκευμένες διαδικασίες sp_who ή sp_who2 στον SQL Server. Μπορείτε επίσης να χρησιμοποιήσετε το SQL Server Profiler ή να επωφεληθείτε από τους μετρητές επιδόσεων για να παρακολουθείτε τη συμπεριφορά συγκέντρωσης σύνδεσης.

Υπάρχουν μερικά πιθανά προβλήματα με την ομαδοποίηση συνδέσεων. Ένα τέτοιο ζήτημα είναι ο κατακερματισμός της ομάδας. Όταν εργάζεστε με συγκέντρωση συνδέσεων, θα πρέπει να γνωρίζετε τον κατακερματισμό της πισίνας και να διασφαλίζετε ότι λαμβάνονται κατάλληλα μέτρα (η αρχιτεκτονική σας θα πρέπει να έχει σχεδιαστεί για την αντιμετώπιση στρατηγικών περιορισμού κατακερματισμού πισίνας) για την αποφυγή του κατακερματισμού της πισίνας. Λάβετε υπόψη ότι ο κατακερματισμός του χώρου συγκέντρωσης ενδέχεται να προκύψει εάν χρησιμοποιείτε την Ολοκληρωμένη ασφάλεια ή ακόμα και όταν η εφαρμογή σας χρησιμοποιεί πάρα πολλές ομάδες σύνδεσης.

Για να διασφαλίσετε ότι η συγκέντρωση συνδέσεων λειτουργεί αποτελεσματικά, θα πρέπει να διασφαλίσετε ότι κλείνετε τις συνδέσεις βάσης δεδομένων όταν δεν χρειάζονται πλέον. Δεν πρέπει ποτέ να καλέσετε τη μέθοδο "Κλείσιμο ή απόρριψη" σε μια παρουσία σύνδεσης στη μέθοδο οριστικοποίησης. Θα πρέπει επίσης να κλείσετε τις παρουσίες συναλλαγής πριν από το κλείσιμο ή τη διάθεση των σχετικών αντικειμένων σύνδεσης. Εδώ είναι μια ωραία ανάγνωση για αυτό το θέμα.