Was macht Ressourcen „teuer“?

10

Ich lese den Ruhezustand und bin auf Aussagen wie "JDBC-Verbindungen, die über mehrere Anforderungen hinweg geöffnet sind, sind keine gute Sache, da es sich um eine teure Ressource handelt" gestoßen.

Was ist mit teuren Ressourcen gemeint?

Bearbeiten: Ich füge hinzu, was der unbekannte Benutzer als Kommentar unten hinzugefügt hat.

Wenn das Herstellen einer Datenbankverbindung teuer ist, warum nicht immer wieder dasselbe verwenden (kein Caching), anstatt es jedes Mal zu schließen und zu öffnen?

Vinoth Kumar CM
quelle
2
Teuer bedeutet, dass es Ihnen weh tut , wenn Sie es zu häufig oder nicht in der angegebenen Weise verwenden.
Alexander Gessler

Antworten:

20

Eine teure Ressource ist eine, die:

  • Das Erstellen / Initialisieren dauert lange. Jede Datenbankverbindung kann bis zu 1-2 Sekunden dauern, um den Handshake abzuschließen.
  • Verwendet viel Speicher. Das Lesen eines vollständigen Datei-Uploads in ein Byte-Array im Speicher vor dem Speichern beansprucht für einen kurzen Zeitraum eine beträchtliche Menge an Speicher.
  • Verwendet viele CPU-Zyklen. Berechnungen für eine große Sammlung von Daten können Ihre CPU belasten, während sie die Berechnungen durchführt.

Jede der teuren Ressourcen kann Skalierbarkeitsprobleme verursachen. Kurz gesagt, Sie können nicht zu viele dieser teuren Vorgänge gleichzeitig ausführen, oder Sie können nicht schnell genug auf Ihre Benutzer reagieren.

Berin Loritsch
quelle
Ich stimme gerne zu, muss aber darauf hinweisen, dass dies im Widerspruch zu dem Beispiel steht, das @Sun gegeben hat. Da das Einrichten einer Verbindung teuer ist, würden Sie Ihre Verbindung offen halten.
Benutzer unbekannt
2
Lassen Sie mich in diesem speziellen Fall klarstellen: Wenn das Erstellen / Initialisieren von etwas lange dauert, möchten Sie die Häufigkeit begrenzen, mit der Sie diese Ressource erstellen / initialisieren. Datenbankverbindungen beanspruchen nicht viele Ressourcen, solange sie geöffnet sind. Daher ist es vorzuziehen, diese Ressourcen zu bündeln.
Berin Loritsch
5

Es kann eine Vielzahl von Dingen sein, die von der spezifischen Ressource abhängen. Sie könnten also Folgendes haben:

  • Wie viel Speicher benötigt es, um zu arbeiten.
  • Die Zeit, die benötigt wird, um die Verbindung herzustellen.
  • Der Aufwand für die Aufrechterhaltung dieser Verbindung.

und so weiter.

Andere Dinge, die etwas teuer machen können, können sein, wenn während des Betriebs usw. Zugriff auf die Festplatte oder das Netzwerk erforderlich ist.

ChrisF
quelle
2

Teuer sollte "rechnerisch" vorangestellt werden. Der Rechenaufwand bezieht sich auf die Zeit oder Ressourcen (CPU, Speicher, Festplatte, Netzwerkbandbreite), die zum Ausführen einer Operation, eines Algorithmus oder eines Programms erforderlich sind.

Andy
quelle
2

Die Kosten für Datenbankverbindungen ergeben sich aus einer Reihe von Faktoren.

  • Datenbankverbindungen lassen sich nur langsam einrichten und erfordern Ressourcen auf Client- und Serverseite. Aus diesem Grund werden Verbindungen zusammengefasst.
  • Offene Transaktionen haben einen Overhead, der die Verwaltung durch Client und Server erfordert.
  • Offene Transaktionen können andere Aktualisierungen blockieren. Dies verlangsamt die Gesamtleistung.

Sie müssen jedoch die Verbindung (oder zumindest die Transaktion) lange genug offen halten, um sicherzustellen, dass Ihre Transaktion den ACID- Test besteht. (Atomic Consistent Isolated Durable)

BillThor
quelle