¿Qué hace que los recursos sean "caros"?

10

Estoy leyendo hibernate y me encontré con declaraciones como "Las conexiones JDBC abiertas en múltiples solicitudes no es algo bueno porque es un recurso costoso".

¿Qué se entiende por recurso costoso?

Editar: estoy agregando lo que el usuario desconocido ha agregado como comentario a continuación.

Si establecer una conexión de base de datos es costoso, entonces ¿por qué no usar lo mismo una y otra vez (no almacenar en caché), en lugar de cerrarlo y abrirlo cada vez?

Vinoth Kumar CM
fuente
2
Caro significa que le hará daño si lo usa con demasiada frecuencia o no de la manera especificada.
Alexander Gessler

Respuestas:

20

Un recurso costoso es aquel que:

  • Toma mucho tiempo crear / inicializar. Cualquier conexión a la base de datos puede tomar más de 1-2 segundos para completar el protocolo de enlace.
  • Usa mucha memoria. Leer un archivo completo cargado en una matriz de bytes en la memoria antes de almacenarlo utilizará una cantidad considerable de memoria durante un breve período de tiempo.
  • Utiliza muchos ciclos de CPU. Los cálculos en una gran colección de datos pueden gravar su CPU mientras realiza los cálculos.

Cada uno de los recursos caros puede proporcionar problemas de escalabilidad . En resumen, no puede tener muchas de estas costosas operaciones sucediendo al mismo tiempo o no podrá responder a sus usuarios lo suficientemente rápido.

Berin Loritsch
fuente
Me gusta estar de acuerdo, pero tengo que señalar que está en conflicto con el ejemplo que dio @Sun. Debido a que configurar una conexión es costoso, mantendrá su conexión abierta.
Usuario desconocido
2
En este caso particular, déjenme aclarar: si algo toma mucho tiempo crear / inicializar, desea limitar la cantidad de veces que crea / inicializa ese recurso. Las conexiones de base de datos no requieren muchos recursos mientras están abiertas, por lo que es preferible agrupar estos recursos.
Berin Loritsch
5

Puede ser una variedad de cosas que dependen del recurso específico. Entonces puede tener lo siguiente:

  • Cuánta memoria requiere para funcionar.
  • El tiempo necesario para realizar la conexión.
  • La sobrecarga en el mantenimiento de esa conexión.

y así.

Otras cosas que pueden hacer que algo sea costoso podrían ser si requiere acceso al disco duro o la red durante su funcionamiento, etc.

ChrisF
fuente
2

Caro debe tener el prefijo "computacionalmente". El gasto computacional se utiliza para referirse a la cantidad de tiempo o recursos (CPU, memoria, disco, ancho de banda de red) necesarios para completar una operación, algoritmo o programa.

Andy
fuente
2

El gasto de las conexiones a la base de datos proviene de varios factores.

  • Las conexiones a la base de datos son lentas de configurar y requieren recursos en el lado del cliente y del servidor. Es por eso que las conexiones se agrupan.
  • Las transacciones abiertas tienen una sobrecarga que requiere la gestión tanto del cliente como del servidor.
  • Las transacciones abiertas pueden bloquear otras actualizaciones. Esto ralentizará el rendimiento general.

Dicho esto, debe mantener la conexión (o al menos la transacción) abierta el tiempo suficiente para asegurarse de que su transacción pase la prueba ACID . (Duradero aislado atómico consistente)

BillThor
fuente