Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 63300|Respuesta: 7

[.NET Core] ADO.NET Crear un pool de conexiones SqlConnection a través del ObjectPool

[Copiar enlace]
Publicado el 19-4-2020 18:51:31 | | | |
ObjectPool es una nueva función de Microsoft, Microsoft nos ayuda a mantener algunos objetos que pueden reutilizarse.

En resumen, similar a las bicicletas compartidas, cuando la usas, escaneas el código para desbloquearla, el vehículo significa que está ocupado, cuando lo usas, cuando cierras el coche, el vehículo liberará la ocupación. Estas ocupaciones y liberaciones son todas mantenidas por la plataforma para nosotros.

Algunos objetos no son seguros para hilos, pero cada vez que instanciamos el objeto, necesitamos consumir algunos recursos.

Explicación detallada del Object Pool en .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Fuente: Architect_Programmer)
Primero, creamos una nueva clase SqlConnectionPooledObjectPolicy que hereda la interfaz IPooledObjectPolicy <T>y necesita implementar sus dos métodos.

Cómo instanciar el objeto en el método Crear,Return indica si el objeto aún puede reutilizarse, y cuando se devuelve false, el objeto se eliminará del conjunto de objetos.

El código fuente de la prueba es el siguiente:

Los resultados de las pruebas son los siguientes:



Se puede ver que el pool de conexiones es un poco más lento en las primeras 10 consultas, y después de eso, es más rápido que cada instancia de SqlConnection.

Adjunto está el código fuente

Turistas, si queréis ver el contenido oculto de esta publicación, por favorRespuesta






Anterior:Los programas en C# ejecutan clases de prueba que consumen mucho tiempo
Próximo:Configuración Trusted_Connection MSSQL
Publicado el 19-4-2020 21:58:46 |
Esto es algo nuevo
Publicado el 30-4-2020 13:05:18 |
Ven a ver, apoyo, sofá
 Propietario| Publicado el 2021-3-22 15:31:43 |
Código fuente de DefaultObjectPoolProvider
Entorno predeterminado MaximumRetained (ContadorProcesadorConteo * 2);





 Propietario| Publicado el 22-3-2021 15:34:51 |
 Propietario| Publicado el 23-03-2021 09:50:57 |
Código de prueba:

maximumRetained se establece en 5, y la prueba solo se instancia una vez cuando se devuelve cada vez que se usa, como se muestra en la figura siguiente:



En caso de que no se devuelva, la Prueba se instancia 10 veces, aunque supere el ajuste máximo de Retenido de 5, y no generará ninguna excepción; puede ser que, tras completar el uso, la recicle lentamente y entonces solo se mantengan 5 instancias:


 Propietario| Publicado el 24-3-2021 18:23:44 |
Pool de Conexión SQL Server (ADO.NET)

Cada vez que un usuario llama a Open en una conexión, el proceso del pool busca las conexiones disponibles en el pool. Si hay una conexión de pool disponible, se devuelve al llamante en lugar de abrir una nueva conexión. Cuando la aplicación llama a Cerrar en esa conexión, el proceso del pool devuelve la conexión al conjunto activo de conexiones en lugar de cerrar la conexión.

https://docs.microsoft.com/zh-cn ... -connection-pooling

Publicado el 17-8-2021 a las 10:13:07 |
Aprende a aprender
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com