O que torna os recursos "caros"?

10

Estou lendo hibernação e me deparei com declarações como "conexões JDBC abertas em várias solicitações não é uma coisa boa porque é um recurso caro".

O que se entende por recurso caro?

Editar: estou adicionando o que o usuário desconhecido adicionou como um comentário abaixo.

Se o estabelecimento de uma conexão com o banco de dados é caro, por que não usar a mesma coisa repetidamente (sem armazenar em cache), em vez de fechá-la e abri-la sempre?

Vinoth Kumar CM
fonte
2
Caro significa que o machucará se você o usar com muita frequência ou não da maneira especificada.
precisa

Respostas:

20

Um recurso caro é aquele que:

  • Leva muito tempo para criar / inicializar. Qualquer conexão com o banco de dados pode levar de 1 a 2 segundos para concluir o handshake.
  • Usa muita memória. Ler um upload completo de arquivo em uma matriz de bytes na memória antes de armazená-lo consumirá uma quantidade considerável de memória por um breve período de tempo.
  • Usa muitos ciclos de CPU. Cálculos em uma grande coleção de dados podem sobrecarregar sua CPU enquanto ela está realizando os cálculos.

Cada um dos recursos caros pode fornecer problemas de escalabilidade . Em resumo, você não pode ter muitas dessas operações caras acontecendo ao mesmo tempo ou não poderá responder aos seus usuários com rapidez suficiente.

Berin Loritsch
fonte
Eu gosto de concordar, mas preciso ressaltar, que entra em conflito com o exemplo que o @Sun deu. Como a configuração de uma conexão é cara, você deve manter sua conexão aberta.
usuário desconhecido
2
Nesse caso em particular, deixe-me esclarecer: se algo demorar muito para criar / inicializar, você deseja limitar o número de vezes que cria / inicializa esse recurso. As conexões com o banco de dados não usam muitos recursos enquanto estão abertos; portanto, é preferível agrupar esses recursos.
precisa saber é o seguinte
5

Pode ser uma variedade de coisas dependentes do recurso específico. Então você pode ter o seguinte:

  • Quanta memória é necessária para operar.
  • O tempo necessário para fazer a conexão.
  • A sobrecarga na manutenção dessa conexão.

e assim por diante.

Outras coisas que podem custar caro podem ser se exigir acesso ao disco rígido ou à rede durante a operação, etc.

ChrisF
fonte
2

Caro deve ser prefixado com "computacionalmente". A despesa computacional é usada para se referir à quantidade de tempo ou recursos (CPU, memória, disco, largura de banda da rede) necessários para concluir uma operação, algoritmo ou programa.

Andy
fonte
2

A despesa de conexões com o banco de dados vem de vários fatores.

  • As conexões com o banco de dados demoram a serem configuradas e requerem recursos no lado do cliente e do servidor. É por isso que as conexões são agrupadas.
  • As transações abertas têm uma sobrecarga que requer gerenciamento por cliente e servidor.
  • As transações abertas podem bloquear outras atualizações. Isso diminuirá o desempenho geral.

Dito isso, você precisa manter a conexão (ou pelo menos a transação) aberta por tempo suficiente para garantir que sua transação seja aprovada no teste ACID . (Durável isolado consistente atômico)

BillThor
fonte