O que é uma conexão de banco de dados, tecnicamente?
Quando dizemos que temos uma" ligação à base de dados "ou um" conjunto de ligações que tem várias ligações Abrir", a nível técnico, o que é que queremos dizer realmente?
o meu entendimento é:
É esta a definição certa? Por isso, Quando tenho o mysql a funcionar num computador e ... aplicação java executando em algum outro computador (ou mesmo computador, realmente não importa.. e quando faço algo como:uma ligação a uma base de dados é uma ligação a um tópico em execução na base de dados processo que está bloqueado e à espera de uma entrada de outro tópico noutro processo.
conn.open();
para abrir uma ligação à base de dados..
O processo mysql irá criar um novo tópico para mim, bloquear esse tópico e começar a ouvir a entrada? E o lado do cliente? O que acontece se eu não fechar a ligação?2 answers
Tens de distinguir o lado cliente e servidor. Eu não posso dizer para MySQL, mas tipicamente o lado do servidor é implementado de modo que, para conexão novo thread está processando os pedidos.
O conjunto de ligações está lá para minimizar a abertura do 'socket' por cima. Normalmente você não se importa com a conexão (assumindo que todos conectados como o mesmo usuário) que você recebeu o conjunto de resultados de DB.
Tu não sabes quer consumir recursos, então você quer ser agradável e quando você terminar você fecha sua conexão. Acredito que todos os servidores de hoje terminam uma conexão se não houver atividade por algum tempo (tempo-limite).
O que é um conjunto de ligações tecnicamente ?
Um conjunto de ligações é um cache de ligações de bases de dados mantidas para que as ligações possam ser reutilizadas quando os pedidos futuros para a base de dados são necessários. Piscinas de conexão são usadas para melhorar o desempenho de executar comandos em uma base de dados. Abrir e manter uma conexão de banco de dados para cada usuário, especialmente os pedidos feitos a uma aplicação dinâmica de banco de dados-driven site, é caro e desperdiça recursos. em a agregação de ligações, após a criação de uma ligação, é colocada na agregação e é utilizada de novo para que uma nova ligação não tenha de ser estabelecida. Se todas as conexões estão sendo usadas, uma nova conexão é feita e é adicionada à piscina.O agrupamento de ligações também reduz o tempo que um utilizador deve esperar para estabelecer uma ligação à base de dados.
E o lado do cliente? O que acontece se eu não fechar a ligação?Tecnicamente, não sabemos. feche uma ligação obtida a partir de uma piscina de conexão - na verdade, devolvemo-la de volta para a piscina quando terminarmos com ela.
comando.o close {[17] } devolverá a ligação à piscina.
Tens de ligar sempre para a ligação.fechar () ao usar um conjunto de ligações. As conexões físicas de banco de dados só serão liberadas se o objeto java for destruído.Se você não fechar conexões, uma fuga de conexão vai ocorrer, e sua piscina vai ficar sem conexões. Quando isto acontecer, a sua aplicação irá parar indefinidamente à espera que uma ligação seja libertada, e terá de ser reiniciada manualmente.