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 é:

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.

É 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:
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?

Author: Koray Tugay, 2015-12-17

2 answers

Sabes o que é o socket? Esta é uma descrição curta, mas agradável em tutorial .

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).

 1
Author: Betlista, 2015-12-17 07:56:37
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.

 1
Author: Prakash Hari Sharma, 2015-12-17 08:08:54