Qu'est-ce qui rend les ressources «chères»?

10

Je lis hibernate et je suis tombé sur des déclarations comme "les connexions JDBC ouvertes sur plusieurs requêtes ne sont pas une bonne chose car c'est une ressource coûteuse".

Qu'entend-on par ressource coûteuse?

Modifier: j'ajoute ce que l'utilisateur inconnu a ajouté comme commentaire ci-dessous.

Si l'établissement d'une connexion à une base de données coûte cher, alors pourquoi ne pas utiliser la même chose encore et encore (sans mise en cache), au lieu de la fermer et de l'ouvrir à chaque fois?

Vinoth Kumar CM
la source
2
Cher signifie qu'il vous fera du mal si vous l'utilisez trop fréquemment ou non de la manière spécifiée.
Alexander Gessler

Réponses:

20

Une ressource coûteuse est celle qui:

  • Prend beaucoup de temps pour créer / initialiser. Toute connexion à la base de données peut prendre jusqu'à 1 à 2 secondes pour terminer la prise de contact.
  • Utilise beaucoup de mémoire. La lecture d'un téléchargement de fichier complet dans un tableau d'octets en mémoire avant de le stocker consommera une quantité considérable de mémoire pendant une brève période.
  • Utilise beaucoup de cycles CPU. Les calculs sur une grande collection de données peuvent taxer votre processeur pendant qu'il effectue les calculs.

Chacune des ressources coûteuses peut entraîner des problèmes d' évolutivité . En bref, vous ne pouvez pas avoir trop de ces opérations coûteuses en même temps ou vous ne pourrez pas répondre assez rapidement à vos utilisateurs.

Berin Loritsch
la source
J'aime être d'accord, mais je dois souligner que cela entre en conflit avec l'exemple donné par @Sun. Parce que la mise en place d'une connexion coûte cher, vous garderiez votre connexion ouverte.
utilisateur inconnu
2
Dans ce cas particulier, permettez-moi de clarifier: si quelque chose prend beaucoup de temps pour créer / initialiser, vous voulez limiter le nombre de fois que vous créez / initialisez cette ressource. Les connexions à la base de données ne prennent pas beaucoup de ressources lorsqu'elles sont ouvertes, il est donc préférable de regrouper ces ressources.
Berin Loritsch
5

Cela peut être une variété de choses qui dépendent de la ressource spécifique. Vous pourriez donc avoir les éléments suivants:

  • La quantité de mémoire nécessaire pour fonctionner.
  • Le temps nécessaire pour établir la connexion.
  • Les frais généraux liés au maintien de cette connexion.

etc.

D'autres choses peuvent coûter cher si elles nécessitent un accès au disque dur ou au réseau pendant son fonctionnement, etc.

ChrisF
la source
2

Cher doit être précédé de "computationally". Les dépenses de calcul sont utilisées pour faire référence à la quantité de temps ou de ressources (CPU, mémoire, disque, bande passante réseau) nécessaires pour terminer une opération, un algorithme ou un programme.

Andy
la source
2

Le coût des connexions à la base de données provient d'un certain nombre de facteurs.

  • Les connexions à la base de données sont lentes à configurer et nécessitent des ressources côté client et côté serveur. C'est pourquoi les connexions sont regroupées.
  • Les transactions ouvertes ont une surcharge qui nécessite une gestion par le client et le serveur.
  • Les transactions ouvertes peuvent bloquer d'autres mises à jour. Cela ralentira les performances globales.

Cela dit, vous devez garder la connexion (ou au moins la transaction) ouverte suffisamment longtemps pour vous assurer que votre transaction réussit le test ACID . (Durable isolé atomique cohérent)

BillThor
la source