Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 63300|Resposta: 7

[.NET Core] ADO.NET Criar um pool de conexão SqlConnection através do ObjectPool

[Copiar link]
Postado em 19-04-2020 às 18:51:31 | | | |
ObjectPool é um recurso novo da Microsoft, a Microsoft nos ajuda a manter alguns objetos que podem ser reutilizados.

Simplificando, assim como bicicletas compartilhadas, quando você usa, escaneia o código para desbloquear, o veículo significa que está ocupado, quando você o usa, quando tranca o carro, o veículo libera a ocupação. Essas ocupações e liberações são todas mantidas pela plataforma para nós.

Alguns objetos não são seguros para threads, mas cada vez que instanciamos o objeto, precisamos consumir alguns recursos.

Explicação detalhada do Object Pool no .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Fonte: Architect_Programmer)
Primeiro, criamos uma nova classe SqlConnectionPooledObjectPolicy que herda a interface IPooledObjectPolicy <T>e precisa implementar seus dois métodos.

Como instanciar o objeto no método Crear,Return indica se o objeto ainda pode ser reutilizado e, quando o false for retornado, o objeto será excluído do pool de objetos.

O código-fonte do teste é o seguinte:

Os resultados dos testes são os seguintes:



Pode-se ver que o pool de conexões fica um pouco mais lento nas primeiras 10 consultas e, depois disso, é mais rápido do que cada instância do SqlConnection.

Anexado está o código-fonte

Turistas, se quiserem ver o conteúdo oculto deste post, por favorResposta






Anterior:Programas em C# executam classes de teste demoradas
Próximo:Configuração Trusted_Connection MSSQL
Postado em 19-04-2020 21:58:46 |
Isso é algo novo
Publicado em 30-04-2020 13:05:18 |
Venha ver, apoio, sofá
 Senhorio| Postado em 2021-3-22 15:31:43 |
Código-fonte DefaultObjectPoolProvider
Ambiente Padrão MaximumRetained (ContagemDeProcessador) * 2;





 Senhorio| Postado em 2021-3-22 15:34:51 |
Também pode ser escrito diretamente


 Senhorio| Postado em 23-03-2021 09:50:57 |
Código de teste:

maximumRetained é definido para 5, e o teste é instanciado apenas uma vez quando retorna toda vez que é usado, como mostrado na figura abaixo:



No caso de não retornar, o Teste é instanciado 10 vezes, embora exceda a configuração máxima de Retido de 5, e não ofereça exceção; pode ser que, após o uso, ele o recicle lentamente, e então apenas 5 instâncias serão mantidas:


 Senhorio| Postado em 2021-3-24 18:23:44 |
Pool de Conexão SQL Server (ADO.NET)

Sempre que um usuário chama o Open em uma conexão, o processo do pool procura as conexões disponíveis no pool. Se houver uma conexão de pool disponível, ela é devolvida ao chamador em vez de abrir uma nova conexão. Quando a aplicação chama Close nessa conexão, o processo do pool retorna a conexão ao conjunto ativo de conexões em vez de fechar a conexão.

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

Postado em 17-08-2021 às 10:13:07 |
Aprenda a aprender
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com