Servus Forum,
ich hätte eine kurze allgemeine Frage zum Umgang mit Datenbanken.
Wird in einem Programm das eine Datenbank benötigt und diese regelmäßig abgefragt,
beim Programmstart eine Verbindung zum Server gestartet und so lange
mit dieser Verbindung gearbeitet bis sie nicht mehr benötigt wird, oder wird bei jedem
Zugriff eine neue Verbindung zum Server hergestellt, abgefragt und wieder geschlossen?
Lg
Benjamin
Allgemeine Frage zum Umgang mit Datenbanken
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
-
- User
- Beiträge: 89
- Registriert: Mittwoch 15. Januar 2014, 22:30
- Wohnort: Bad Kötzting
- Kontaktdaten:
Vielen Dank für die schnellen Rückmeldungen!
Wie ist das mit "zu teuer" zu verstehen (Systemresourrcen, Geschwindigkeit)?
Wie ist das mit "zu teuer" zu verstehen (Systemresourrcen, Geschwindigkeit)?
Na viel anderes gibt’s ja nicht
100 mal eine Verbindung aufbauen und 100 mal eine Anfrage sind 200 Dinge. Vs 101 Dinge wenn man nur einmal eine Verbindung aufbaut.
Es ist Standard DB Verbindungen zu poolen. Aus eben diesem Grund.
100 mal eine Verbindung aufbauen und 100 mal eine Anfrage sind 200 Dinge. Vs 101 Dinge wenn man nur einmal eine Verbindung aufbaut.
Es ist Standard DB Verbindungen zu poolen. Aus eben diesem Grund.
Grundsätzlich hast du beim Aufbau einer Verbindung über ein Netzwerk immer gewisse "einmalige" Kosten die auftreten. Das sind Dinge wie TCP slow start oder der Handshake um ggfs. die TLS Verbindung aufzubauen.
Bei einer Datenbank hast du darüberhinaus noch die Situation dass mit jeder Verbindung i.d.R. einiges an Informationen verbunden ist. Je nach Datenbank hast du auch pro Verbindung einen Thread oder sogar Prozess. Die benötigen natürlich auch noch einiges an Arbeitsspeicher. Es gibt auch einige Prozesse in der Datenbank die von der Anzahl der Verbindungen abhängt.
Aus diesem Grund möchte man nicht nur vermeiden ständig neue Verbindungen zur Datenbank aufzubauen, es empfiehlt sich auch die Anzahl der Verbindungen zur Datenbank möglichst klein zu halten. Tust du dass nicht wird die Performance auch in der Regel schlechter weil deine Datenbank ohnehin durch die Anzahl der CPUs nur begrenzt Queries parallel ausführen kann, mehr Verbindungen führen dann nur zu mehr Context Switches (und anderen unerwünschten Effekten).
Bei einer Datenbank hast du darüberhinaus noch die Situation dass mit jeder Verbindung i.d.R. einiges an Informationen verbunden ist. Je nach Datenbank hast du auch pro Verbindung einen Thread oder sogar Prozess. Die benötigen natürlich auch noch einiges an Arbeitsspeicher. Es gibt auch einige Prozesse in der Datenbank die von der Anzahl der Verbindungen abhängt.
Aus diesem Grund möchte man nicht nur vermeiden ständig neue Verbindungen zur Datenbank aufzubauen, es empfiehlt sich auch die Anzahl der Verbindungen zur Datenbank möglichst klein zu halten. Tust du dass nicht wird die Performance auch in der Regel schlechter weil deine Datenbank ohnehin durch die Anzahl der CPUs nur begrenzt Queries parallel ausführen kann, mehr Verbindungen führen dann nur zu mehr Context Switches (und anderen unerwünschten Effekten).