Executando verificação de segurança...
1

Otavio, ótima pergunta! Em questão de performance, é inquestionável que deixar elas abertas será mais rápido, dado que abrir a conexão com o banco de dados é mais demorado do que só reutilizar uma conexão que estava aberta.

Mas mais rápido não necessariamente resulta em ser melhor. Digo isso, pois no Postgres por exemplo, abrir uma conexão com o banco de dados é milisegundos, por exemplo 10ms ou 50ms se o banco estiver no mesmo local que a aplicação. Não é muita coisa, mas é bem mais devagar do que uma query subsequente que custaria 0.1ms ou 1.6ms. Estou tirando esses valores aqui dos meus testes locais, pois neste exato momento estou rodando o serviço do TabNews localmente e pegando esses valores.

Agora, nas primeiras versões do TabNews, a gente abria e fechava a conexão a cada query e dava para usar o site. Ambas camadas da Aplicação e Banco estavam hospedadas na mesma região na AWS. Mas depois a gente fez uma nova abordagem para reutilizar o máximo que possível um pool de conexões, mesmo num ambiente serverless. Se você quiser acompanhar a pesquisa feita na época, veja essa issue que está dentro do repositório do módulo que usamos para se conectar ao banco.

De qualquer forma, eu não deixaria conexões abertas com o banco de dados sem serem reaproveitadas e gerenciadas por um pool. Pois se você só ficar abrindo conexões infinitamente sem fechar elas, rapidamente você irá esbarrar no limite máximo de conexões que o banco de dados consegue manter aberta.

Hoje no TabNews estamos usando a menor instância do RDS e ele possibilita no máximo 78 conexões abertas (isso já considera conexões reservadas para o super user do banco). Caso queira ver isso rodando em Produção, acesse o /status aqui do TabNews. Tem mais dados legais lá 🤝

Carregando publicação patrocinada...
1

Olá Filipe Deschamps, obrigado pelo resposta.

No meu caso, o banco de dados não está hospedado no mesmo local da minha aplicação. Enquanto que o banco de dados está hospedado em um serviço oferecido pela Hostinger, a minha aplicação roda em meu computador, em um aplicativo windows (como dito, feito em Windows Forms).

Apesar disso, continuarei utilizando esse método de Abrir a Conexão e Fechar, pois, apesar de ter encontrado algo semelhante sobre o pool dentro do C#, não possuo aprofundamento adequado.

Obrigado pela ajuda, grato.