Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 20385|Répondre: 0

[Source] ADO.NET Tutoriel (5) Expliquez en détail le pool de connexions à la base de données

[Copié le lien]
Publié sur 17/09/2016 15:41:28 | | | |
Résumé
Aujourd’hui, je vais parler des pools de connexion de bases de données. Pour être honnête, j’ai dit que la poire canard est très grosse. Parce que les pools de connexions sont relativement difficiles à comprendre comparés à d’autres chapitres. Je veux vous l’expliquer avec les phrases les plus populaires, mais ce n’est pas une tâche facile. Cependant, les pools de connexion sont également un point de connaissance très important, notamment lors du déploiement de programmes multi-utilisateurs. Par conséquent, je dois non seulement parler, mais aussi parler en profondeur. À travers cet article, vous comprendrez les fondamentaux du pooling de connexions et comment il est déjà exploité pour améliorer les performances de votre application.

Table des matières
Qu’est-ce qu’un pool de connexions ?
Comment fonctionne le pool de connexions
Parlons de quelques propriétés très importantes des pools de connexion
Exceptions du pool de connexions et méthodes de gestion
Un moyen de surveiller l’état de votre connexion
Principes de base pour une utilisation efficace des pools de connexions
1. Qu’est-ce qu’un pool de connexions ?
      Dans l’article précédent, « ADO.NET Vous devez connaître (4) objets de connexion de goût », j’ai souligné que l’établissement d’une connexion à une base de données est une activité très chronophage (chronophage) et laborieuse (qui consomme des ressources). Cela s’explique par le fait que la connexion à un serveur de base de données implique plusieurs processus longs : établir un canal physique (comme un socket ou un pipeline nommé), effectuer une poignée de main initiale avec le serveur, analyser les informations de la chaîne de connexion, faire authentifier la connexion par le serveur, effectuer une vérification pour enregistrer la transaction en cours, etc. Quelle que soit la raison pour laquelle un tel mécanisme existe, il y a toujours une raison d’exister. Puisque créer une nouvelle connexion est si pénible, pourquoi ne pas réutiliser une connexion existante ?

      En fait, ADO.NET nous propose déjà une méthode d’optimisation appelée regroupement de connexions. Un pool de connexions est l’un de ces conteneurs : il abrite un certain nombre de connexions physiques vers le serveur de base de données. Ainsi, lorsque nous devons nous connecter au serveur de base de données, il suffit de supprimer une connexion libre du pool (conteneur) au lieu d’en créer une nouvelle. Cela réduit considérablement la surcharge de la connexion à la base de données, ce qui améliore les performances de l’application.

PS:本来做了2张图片来描述连接池的,无奈公司装有监控软件,不能上传,所以只能等下次有时间上传了。



2. Comment fonctionne le pool de connexions
2.1 Créer un pool de connexions
      Il convient de noter que les pools de connexions sont sensibles aux classes. C’est-à-dire qu’un même domaine d’application peut avoir plusieurs types différents de pools de connexions en même temps. Alors, comment identifient-ils les pools de connexions ? En détail, elle se distingue par la signature qui forme le processus, le domaine applicatif, la chaîne de connexion et l’identité Windows (lorsqu’on utilise une sécurité intégrée). Cependant, pour le même domaine d’application, il est généralement identifié uniquement par la chaîne de connexion. Lorsqu’une connexion est ouverte, un nouveau pool de connexions est créé si la signature de type de la connexion en bande ne correspond pas au type du pool de connexion existant. sinon, aucun nouveau pool de connexions n’est créé.

      Un exemple typique de création d’un lien :


Dans l’exemple ci-dessus, j’ai créé trois objets SqlConnection, mais seuls deux pools de connexion étaient nécessaires pour les gérer. Attention les amis, vous avez peut-être déjà constaté que conn1 et conn3 ont la même chaîne de connexions, donc ils peuvent partager un pool de connexions, tandis que conn2 et conn1 sont différents de conn3, donc il faut créer un nouveau pool de connexions.

2.2 Allocation des connexions inactives
      Lorsqu’un utilisateur crée une requête de connexion ou appelle l’Open of a Connection Object, le gestionnaire de pool de connexion doit d’abord trouver un pool de connexion du type correspondant en fonction de la signature de type de la requête de connexion, puis essayer d’allouer une connexion libre. Les détails sont les suivants :

S’il y a une connexion disponible dans le pool, renvoyez la connexion.
Si toutes les connexions dans la piscine sont épuisées, créez-en une nouvelle à ajouter à la piscine.
Si le nombre maximal de connexions dans le pool est atteint, la demande entre dans la file d’attente jusqu’à ce qu’il y ait des connexions libres disponibles.
2.3 Supprimer les connexions invalides
      Les connexions invalides, c’est-à-dire les connexions qui ne se connectent pas correctement au serveur de base de données. Pour les pools de connexions, le nombre de connexions stockées sur le serveur de base de données est limité. Par conséquent, si les connexions invalides ne sont pas supprimées dans le temps, de l’espace dans le pool de connexions sera perdu. En fait, vous n’avez pas à vous inquiéter, le gestionnaire du pool de connexion a très bien réglé ces problèmes pour nous. Si une connexion est inactive pendant une longue période, ou si elle détecte que la connexion au serveur est déconnectée, le gestionnaire de pool de connexion supprime la connexion du pool.

2.4 Recyclage des connexions usagées
      Lorsque nous avons fini d’utiliser une connexion, nous devrions la fermer ou la relâcher à temps afin que la connexion puisse être renvoyée dans la piscine pour réutilisation. Nous pouvons fermer la connexion via la méthode Close ou Dispose de l’objet Connection, ou via l’instruction using en C#.



3. Parlez-moi de quelques qualités très importantes
Le comportement du pool de connexion peut être contrôlé par des chaînes de connexion et comprend principalement quatre propriétés importantes :

Délai d’attente de connexion : Le temps d’attente de la demande de connexion. Par défaut, c’est 15 secondes en secondes.
Taille maximale du pool : Le nombre maximal de connexions dans le pool. Le taux par défaut est 100.
Taille minimale du pool : Le nombre minimum de connexions dans le pool. Par défaut, c’est 0.
Pooling: 是否启用连接池。ADO.NET默认是启用连接池的,因此,你需要手动设置Pooling=false来禁用连接池。
Prenons un exemple pour comprendre les propriétés du pool de connexions. Le code est le suivant :

4. Exceptions du pool de connexion et méthodes de gestion
      Lorsqu’un utilisateur ouvre une connexion sans la fermer correctement ou en temps voulu, cela déclenche souvent le problème de « fuite de connexion ». La connexion fuite reste ouverte jusqu’à ce que la méthode Disposal soit appelée, et que le rambeau-ordures (GC) se ferme et libère la connexion. Contrairement à ADO, ADO.NET devez fermer manuellement les connexions utilisées. Un mythe important est que la connexion est fermée lorsque l’objet connecté est en dehors du champ local. En fait, lorsqu’il est hors de portée, seul l’objet de connexion est libéré, et non la ressource de connexion. Eh bien, regardons d’abord un exemple.

Pour rendre les résultats plus évidents, j’ai spécialement réglé le nombre maximal de connexions à 5 et le temps d’attente est de 1 seconde. Après la course, les résultats suivants sont rapidement obtenus.


D’après les résultats ci-dessus, il est clair qu’il existe une anomalie dans cette connexion. Nous savons déjà que le nombre maximal de connexions dans le pool de connexions est de 5, et lorsque la 6e connexion est créée, il est nécessaire d’attendre que la connexion expire car le nombre maximal de connexions dans le pool a atteint le maximum et il n’y a pas de connexions libres. Lorsque le temps d’attente est dépassé, l’exception de connexion mentionnée ci-dessus apparaît. Je dois donc insister une fois de plus sur le fait que les connexions usagées doivent être correctement fermées et libérées dès que possible.



5. Méthodes de surveillance de l’état des connexions SQL Server
(1) Par le moniteur d’activité
Étape 1 : Ouvrez le gestionnaire MSSMS et cliquez sur l’icône « Moniteur d’activité ».



Étape 2 : Dans la vue Moniteur d’activité ouvert, cliquez sur l’onglet Processus.



Étape 3 : Exécutez l’exemple dans #4 Exceptions et méthodes de gestion du pool de connexions, vous pouvez voir les 5 connexions ouvertes comme montré dans la figure ci-dessous.



(2) Utiliser des instructions T-SQL
De même, en exécutant la procédure stockée système sp_who nous pouvons également surveiller l’état de la connexion.






6. Principes de base pour une utilisation efficace des pools de connexions
      Tirer une bonne utilisation du pool de connexions améliorera grandement les performances de votre application. Au contraire, si elle est mal utilisée, elle ne fera aucun mal. En général, les principes suivants doivent être suivis :

Demandez une connexion dans les plus délais, déverrouillez la connexion au plus vite.
Lorsque vous fermez la connexion, fermez d’abord la transaction définie par l’utilisateur concernée.
Assurez-vous et maintenez au moins une connexion ouverte dans le pool de connexions.
Essayez d’éviter les débris de la piscine. Cela inclut principalement la fragmentation des pools générée par la sécurité intégrée et la fragmentation des pools générée par l’utilisation de nombreuses bases de données.
Conseil : La fragmentation des pools est un problème courant dans de nombreuses applications web, et les applications peuvent créer un grand nombre de pools qui ne sont publiés qu’à la fin du processus. De cette façon, un grand nombre de connexions s’ouvrent, occupant beaucoup de mémoire, ce qui entraîne une réduction des performances.





Précédent:.net/c# génère des nombres aléatoires, des comptes personnalisés de lettres et de nombres
Prochain:Comment puis-je définir HttpOnly pour les cookies ? À quoi sert HttpOnly ?
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com