Pular para o conteúdo principal

Pool de Conexões


Toda vez que uma requisição é feita, o servidor deve abrir uma conexão com o banco de dados e fecha-lá no final da requisição, ficar abrindo e fechando uma conexão com o banco de dados gera um tempo de latência muito grande e torna o sistema mais lento, e aplicações Web que recebem um número muito grande de acessos simultâneos podem ter problemas em manter a aplicação funcionando por causa desse excesso de conexões.

Para evitar esses problemas é recomendado o uso de Conexões Pool para as conexões com o banco de dados. Conexão Pool é uma camada que fica entre a camada intermediária que faz as conexões com o banco de dados e o próprio servidor de banco de dados. Em aplicações Java podemos citar uma classe java intermediária e o banco seria representado por uma conexão com o driver JDBC que se conectaria com algum servidor de banco de dados.

Em uma conexão sem o Pool, a classe Java realiza uma requisição ao driver JDBC e esse drive abre uma conexão com o servidor do banco de dados.
A ideia atrás do Pool é do cliente conseguir realizar uma conexão com o banco quase da mesma forma que usando o driver JDBC, pois o objetivo final é o mesmo, conseguir realizar uma conexão com o banco de dados. Então a camada do Pool irá ficar entre a camada intermediária e a camada de conexão que é o driver JDBC.

Podemos observar o Pool como uma "piscina de conexões", basicamente o Pool já mantém um certo número de conexões já abertas com o banco de dados. Quando o intermediário faz a requisição de uma conexão usando o Pool, invés de abrir uma nova conexão com o banco usando o driver JDBC, ele simplesmente pega uma das conexões que o Pool já mantinha aberta e marca como alocada para aquele usuário. Desta forma o usuário usa a conexão normalmente e quando não precisa mais da conexão, em vez de fechar a conexão ela é mantida aberta, mas é marcada como disponível.
Quando o número de conexões abertas simultaneamente é maior que o número de conexões mantidas abertas pelo Pool, o Pool abre uma nova conexão com o banco de dados, se o número máximo de conexões reais já tenham sido abertas, então é lançado uma excessão.

As vantagens da conexão Pool:
- Otimizar o tempo, pois, evita abri e fechar conexões reais com o banco de dados.
- Permite atender um grande número de requisições sem a necessidade de manter um número tão grande de conexões com o banco de dados. O número de conexões do Pool tem que ser maior ou igual ao número de conexões simultâneas.

Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.

Abraço e bons estudos.

Comentários

Postagens mais visitadas deste blog

Conhecendo a arquitetura do Banco de Dados Oracle

#15 Vamos focar mais no ambiente de banco de dados mais comum, que é uma instância em um computador, abrindo um banco de dados armazenado em discos locais. Sempre que for mensionado instância, esta se referindo ao banco de dados em funcionamento. Um banco Oracle é composto por duas estruturas, uma lógica e uma física. A estrutura lógica é chamada de instância e composta por estruturas de memória e processos, a sua existência é temporária na memória RAM e CPU e fica ativa enquanto o banco Oracle estiver ligado, se desligar o banco Oracle toda a informação ou vestígios de sua existência será apagado da memória, ao ligar o banco Oracle a instância é carregada novamente na memória. Os processos que compõem a instância trabalham em segundo plano e fica ativo o tempo todo enquanto a instância estiver ativa. A estrutura física é onde fica armazenado as informações, e uma vez criado, ele existe até que o DBA deliberadamente decida exclui-lo. Quando um banco Oracle é iniciado, na me...

O Cache de Buffer do Banco de dados - Estruturas de Memória no Oracle

#21 Vamos conhecer um pouco mais sobre o Cache de Buffer de Dados. O Cache de Buffer de Dados é o local de trabalho do Oracle, é nessa área que ele executa as SQLs. A função dessa área é otimizar e melhorar o desempenho das instruções DML. O maior gargalo de um banco de dados é o I/O dos arquivos em disco. Mas antes de explicar como funciona o Cache de Buffer de Banco de dados, vamos entender rápidamente o que é bloco, desta forma você não fica perdido, os arquivos de dados que contém os registros que são as linhas da tabela, indices e outros objetos de dados são formatados em blocos de tamanho fixo, o DBA pode definir um tamanho para esses blocos ou deixar de forma automática. A quantidade de linhas por bloco é indefinida, pois, as linhas possuem comprimento variável, o comprimento desta linha dependerá do número de colunas e os tipos de informações definidos para a tabela. De acordo com tamanho das linhas, pode haver várias linhas por bloco ou uma linha pode se estender por vár...

Shared Pool - Estruturas de Memória no Oracle

#23 O Shared Pool é considerada umas das estruturas de memórias mais complexas da SGA, ela é dividida em dezenas de subestruturas e todas são gerenciadas internamente pelo Oracle. Mas nesse momento vamos citar apenas os 4 principais componentes desta estrutura, as demais serão analizadas posteriormente. Quando uma aplicação executa uma DML, vários processos internos no Oracle são realizados até o retorno do resultado para o usuário. E esses 4 componentes tem participação direta na execução da DML e com isso gerando um bom desempenho do banco de dados. Os 4 principais componentes são: - O Cache de Biblioteca - O Cache de Dicionário de Dados - A Área PL/SQL - O Cache de Resultados de Funções PL/SQL e Consultas SQL Agora, vamos conhecer um pouco mais de cada um. - O Cache de Biblioteca (library cache) Todas instruções DML enviadas pela aplicação devem ser analizadas pelo Oracle. Quem realiza essa análise é o parse, o parse converte o código escrito pelos progra...