Datenbank öffnen wann?
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Datenbank öffnen wann?
ich weiß nicht, ob das Thema hier schonmal angesprochen wurde. Ich habe aber konkret nichts gefunden und außerdem liebe ich es Grundsatzdiskussionen und Glaubenskrisen zu entfachen.
Gibt es irgendeinen Ratschlag, wie man vorgehen sollte bzg. der Arbeit mit PostgrSQL? Immer Connection zur Datenbank, die öffnen, Daten auslesen und wieder schließen und Connection beenden?. Oder alles einmal am Programmanfang und offen lassen? Oder einfach nur am Anfang eine Connection erstellen, die Verbindung bis zum Ende des Programms halten aber immer wieder zwischendurch die DAtenbank schließen und bei Bedarf wieder öffnen? Wieviel Zeit geht dabei drauf, wenn jedesmal eine Connection aufgebaut und wieder beendet wird usw. usw.?
Gibt es irgendeinen Ratschlag, wie man vorgehen sollte bzg. der Arbeit mit PostgrSQL? Immer Connection zur Datenbank, die öffnen, Daten auslesen und wieder schließen und Connection beenden?. Oder alles einmal am Programmanfang und offen lassen? Oder einfach nur am Anfang eine Connection erstellen, die Verbindung bis zum Ende des Programms halten aber immer wieder zwischendurch die DAtenbank schließen und bei Bedarf wieder öffnen? Wieviel Zeit geht dabei drauf, wenn jedesmal eine Connection aufgebaut und wieder beendet wird usw. usw.?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Manfred,
da kann ich zumindest zu PostgreSQL nichts zu sagen. Nur zwei Erfahrungen aus dem ADS:
- Das Öffnen von FOXCDX im ADS dauert sehr lange. Geschätzt 2x so lange wir reine FOXCDX.
- Zum Öffnen von Tabellen im ADS gibt es einen ewig offenen PDR 5993: Der verliert bei jedem Öffnen und schließen einer Tabelle 32 Bytes. Das kann sich dann eventuell schon mal läppern.
Das mag bei PostgreSQL anders sein. Zeigt aber, das es auch bei SQL schon mal klemmen kann. Das Geschwindigkeitsproblem kann man ja noch austesten. Das mit dem Speicherleck ginge ja auch noch. Aber es mag dort auch andere Probleme geben als beim ADS. Man muß da leider die Augen auch in ungewohntem Terrain offen haben.
Jan
da kann ich zumindest zu PostgreSQL nichts zu sagen. Nur zwei Erfahrungen aus dem ADS:
- Das Öffnen von FOXCDX im ADS dauert sehr lange. Geschätzt 2x so lange wir reine FOXCDX.
- Zum Öffnen von Tabellen im ADS gibt es einen ewig offenen PDR 5993: Der verliert bei jedem Öffnen und schließen einer Tabelle 32 Bytes. Das kann sich dann eventuell schon mal läppern.
Das mag bei PostgreSQL anders sein. Zeigt aber, das es auch bei SQL schon mal klemmen kann. Das Geschwindigkeitsproblem kann man ja noch austesten. Das mit dem Speicherleck ginge ja auch noch. Aber es mag dort auch andere Probleme geben als beim ADS. Man muß da leider die Augen auch in ungewohntem Terrain offen haben.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Jede offene Verbindung kostet Resourcen,
... wenn du 10.000 Angestellte hast, die den ganzen Tag zuerst Verbindungen aufmachen und abends wieder zumachen ... die Daten aber tatsächlich selten brauchen dann ist das unnötig.
... wenn du 10 Angestellte hast, die den ganzen Tag zuerst Verbindungen aufmachen und abends wieder zumachen ... die Daten aber tatsächlich selten brauchen dann ist völlig egal, bei 10 gehts immer .
wenn du dauernd Anfragen hast, könnte ich mir vorstellen, dass es schneller ist die Verbindung offen zu lassen.
Tatsächlich habe ich zum Testen aber zu wenige Anwender um das zur prüfen.
... wenn du 10.000 Angestellte hast, die den ganzen Tag zuerst Verbindungen aufmachen und abends wieder zumachen ... die Daten aber tatsächlich selten brauchen dann ist das unnötig.
... wenn du 10 Angestellte hast, die den ganzen Tag zuerst Verbindungen aufmachen und abends wieder zumachen ... die Daten aber tatsächlich selten brauchen dann ist völlig egal, bei 10 gehts immer .
wenn du dauernd Anfragen hast, könnte ich mir vorstellen, dass es schneller ist die Verbindung offen zu lassen.
Tatsächlich habe ich zum Testen aber zu wenige Anwender um das zur prüfen.
Gruß
Hubert
Hubert
- Marcus Herz
- 1000 working lines a day
- Beiträge: 852
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Rein API Technisch kann man die Connection offen lassen, benötigt auf dem Server nicht viel Speicher. Man sollte aber nicht gebrauchte Abfragen (was das Offenhalten einer Tabelle betrifft) wieder schliessen, den es wird je Abfrage (also für jeden User) eine Speicherkopie auf dem Server angelegt.
Das wird auch für die PGDBE nicht anderes sein. Connection öffnen dauert immer etwas, sowohl ADS als PostgrSQL. Ich öffne einmal eine Connection im Main (Egal ob ADS oder PostgrSQL) und die bleibt bis zum Schluss offen. Meine größte Applikation hat vielleicht 150 aktive gleichzeitige Anwender, davon öffnet jede App 2 Connections für jeweils einen Thread.
PS Manfred: Außerdem find ich es gut, Grundsatzfragen zu stellen und gemeinsam zu diskutieren.
Das wird auch für die PGDBE nicht anderes sein. Connection öffnen dauert immer etwas, sowohl ADS als PostgrSQL. Ich öffne einmal eine Connection im Main (Egal ob ADS oder PostgrSQL) und die bleibt bis zum Schluss offen. Meine größte Applikation hat vielleicht 150 aktive gleichzeitige Anwender, davon öffnet jede App 2 Connections für jeweils einen Thread.
PS Manfred: Außerdem find ich es gut, Grundsatzfragen zu stellen und gemeinsam zu diskutieren.
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: Datenbank öffnen wann?
Servus,
wir machen es ähnlich wie Marcus, wobei wir pro Thread eine Connection machen, obwohl eine am Programmanfang reichen würde. Das hat historische Gründe und Gründe der Kapselung, ähnlich wie bei dbfntx / Thread.
Insgesamt dauert nur der erste connect auf den PG-Server etwas, jeder weitere geht dann rasend schnell. Wenn Du Dir im Taskmanager den Speicherbedarf auf dem PG-Server anschaust wirst Du sehen, dass der marginal ist. Die Verbindung kann also offen bleiben, die lokalen Tabellen kannst öffnen und schließen, wie Du lustig bist.
wir machen es ähnlich wie Marcus, wobei wir pro Thread eine Connection machen, obwohl eine am Programmanfang reichen würde. Das hat historische Gründe und Gründe der Kapselung, ähnlich wie bei dbfntx / Thread.
Insgesamt dauert nur der erste connect auf den PG-Server etwas, jeder weitere geht dann rasend schnell. Wenn Du Dir im Taskmanager den Speicherbedarf auf dem PG-Server anschaust wirst Du sehen, dass der marginal ist. Die Verbindung kann also offen bleiben, die lokalen Tabellen kannst öffnen und schließen, wie Du lustig bist.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Datenbank öffnen wann?
die lokalen Tabellen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Ich nehme an, Werner meint hier "ISAM classic" (ohne PGDBE und alles). Man kann z.B. im ProcMon schön sehen, wie schnell das geht. Langsam wird das nur bei hyperaktivem bzw. schlecht konfiguriertem Virenscanner.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datenbank öffnen wann?
Ich arbeite seit einiger Zeit intensiv mit Postgres. Damit meine ich nicht die PGDBE sondern direkte Aufrufe der Funktionen aus der Postgres pqlib.dll. Die Alaska PG Geschichte verwende ich gar nicht.
Es ist absolut problemlos beim Start des Programms die Verbindung zum Postgres Server aufzubauen und diese dann während der ganzen Laufzeit des Programm zu nutzen wenn du:
a) nicht mehrere 10'000 User hast
b) vor jedem Aufruf zuerst den Verbinungsstatus prüfst ( PQStatus()) und ggf. die Verbinung erneuerst
c) sicherstellst dass du die Resultat-Sets auch konsequent löscht's ( PQClear(nResult) )
Dabei is C) ist besonders wichtig weil der Server diese sonst bis zum Verbindungsende vorhält und dies u. U. sehr viel Speicher belegt.
Wenn du die Verbinung immer schliesst und erneut öffnest verlierst du u.U. einiges an Zeit besonders wenn der Server auch noch andere User bedient.
Es ist absolut problemlos beim Start des Programms die Verbindung zum Postgres Server aufzubauen und diese dann während der ganzen Laufzeit des Programm zu nutzen wenn du:
a) nicht mehrere 10'000 User hast
b) vor jedem Aufruf zuerst den Verbinungsstatus prüfst ( PQStatus()) und ggf. die Verbinung erneuerst
c) sicherstellst dass du die Resultat-Sets auch konsequent löscht's ( PQClear(nResult) )
Dabei is C) ist besonders wichtig weil der Server diese sonst bis zum Verbindungsende vorhält und dies u. U. sehr viel Speicher belegt.
Wenn du die Verbinung immer schliesst und erneut öffnest verlierst du u.U. einiges an Zeit besonders wenn der Server auch noch andere User bedient.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Datenbank öffnen wann?
das einzige Problem was mir ein Bekannter erzählt hat wäre, wenn die Verbindung immer bestehen bleibt, aber der schlaue User aus irgendwelchen auch immer vorhandenen Gründen den PC neu startet, dann bleiben wohl Leichen übrig, die man dann entsprechend behandeln muß.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datenbank öffnen wann?
Aber nicht auf dem Postgres Server. Wenn das Verbindungs-Timeout abgelaufen ist räumt der Server die Verbindung und alle überreste der abgebrochenen Verbinung weg.Manfred hat geschrieben: ↑Fr, 17. Apr 2020 8:28 das einzige Problem was mir ein Bekannter erzählt hat wäre, wenn die Verbindung immer bestehen bleibt, aber der schlaue User aus irgendwelchen auch immer vorhandenen Gründen den PC neu startet, dann bleiben wohl Leichen übrig, die man dann entsprechend behandeln muß.
Wenn das Programm natürlich lokal auf C:\ irgendwelche Dateien anlegt, dann musst du die entsprechend behandeln.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Marcus Herz
- 1000 working lines a day
- Beiträge: 852
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Auf Leichen auf dem Server hast du keinen Einfluss. Das ist Aufgabe der DBMS.
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Datenbank öffnen wann?
ok, dann war es wohl das System mit dem der Bekannte arbeitet. Bei ihm läuft progress und der Client dazu ist wohl auch proprietär.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Datenbank öffnen wann?
das ist schon klar, aber sind die alle so unterschiedlich von der Philosophie her?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Manfred,
im ADS mache ich beim Programmstart eine Connection auf. Und die bleibt stehen bis zum Programmende. Bislang gab das noch keine negativen Nebenwirkungen.
Wenn ich ein Programm per Taskmanager, ALT-C, Rechnerabsturz, ... gewaltsam abbreche, kann ich natürlich die Connection nicht sauber beenden. Der ADS quittiert das damit, das die Verbidnung noch steht. Und alle zu dem Zeitpunkt geöffneten Tabellen weiter offen sind. Daß das alles nicht der Realität entspricht merkt der erst nach dem eingestellten Timeout. Und bereinigt das dann automatisch. Aber so lange sind die Tabellen auch gesperrt. Das sind aber auch die einzigen Nebenwirkungen in dem Bezug.
Ich setze voraus das der PostgreSQL da ähnlich reagiert. Ansonsten würden sich ja weltweit millionen von PostgreSQL-Servern langsam zumüllen, weil solche ungeplanten Abbrüche ja ständig passieren (ich wiill gar nicht wissen wie viele Anwender heute noch ihre Programme beenden indem sie einfach den Rechern aus machen). Und garantiert sehr viele davon die Connection beim Programmstart öffnen und dann bis zum Programmende nicht mehr schließen.
Jan
im ADS mache ich beim Programmstart eine Connection auf. Und die bleibt stehen bis zum Programmende. Bislang gab das noch keine negativen Nebenwirkungen.
Wenn ich ein Programm per Taskmanager, ALT-C, Rechnerabsturz, ... gewaltsam abbreche, kann ich natürlich die Connection nicht sauber beenden. Der ADS quittiert das damit, das die Verbidnung noch steht. Und alle zu dem Zeitpunkt geöffneten Tabellen weiter offen sind. Daß das alles nicht der Realität entspricht merkt der erst nach dem eingestellten Timeout. Und bereinigt das dann automatisch. Aber so lange sind die Tabellen auch gesperrt. Das sind aber auch die einzigen Nebenwirkungen in dem Bezug.
Ich setze voraus das der PostgreSQL da ähnlich reagiert. Ansonsten würden sich ja weltweit millionen von PostgreSQL-Servern langsam zumüllen, weil solche ungeplanten Abbrüche ja ständig passieren (ich wiill gar nicht wissen wie viele Anwender heute noch ihre Programme beenden indem sie einfach den Rechern aus machen). Und garantiert sehr viele davon die Connection beim Programmstart öffnen und dann bis zum Programmende nicht mehr schließen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datenbank öffnen wann?
Nein. Ganz und gar nicht. Es gibt gar keine Record und Filelocks wie unter DBF und ADS .....Ich setze voraus das der PostgreSQL da ähnlich reagiert.
Wenn du jeweils vor einer neuen Anforderung den Verbinungstatus prüfst ist das so.Und garantiert sehr viele davon die Connection beim Programmstart öffnen und dann bis zum Programmende nicht mehr schließen.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Carlo,
das ist schon klar. Aber in Bezug auf die Connection wird der sehr ähnlich reagieren. Auch die wird im ADS nach einem warumauchimmer-Absturz bis zum Timeout als offen angezeigt.
Jan
das ist schon klar. Aber in Bezug auf die Connection wird der sehr ähnlich reagieren. Auch die wird im ADS nach einem warumauchimmer-Absturz bis zum Timeout als offen angezeigt.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9357
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Es gibt bei SQL-Servern nichts wie "geöffnete Dateien", Jan. Und wenn eine Connection weg ist, ist sie weg.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Datenbank öffnen wann?
Tom,
das weiß ich doch. Ich red ja auch hier von der Connection.
Jan
das weiß ich doch. Ich red ja auch hier von der Connection.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: Datenbank öffnen wann?
Selbstverständlich gibt es Row-locks, wir verwenden die tagtäglich:
Code: Alles auswählen
pg_try_advisory_lock()
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: Datenbank öffnen wann?
Ja klar, zum Server hast ja nur eine Connection und keine Tabellen. Aber Vorsicht, wenn Du die ISAM-Emulation benutzt, dann ist das Öffnen und Schließen bei großen Tabellen sehr langsam. Man sollte eh soweit wie irgendwie möglich Pass-Through nutzen. Siehe dazu in der Hilfe
Database Engines / PG-SQL / Data Access Methods
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Datenbank öffnen wann?
Klaus S. hat mir seine Sache mit DAcSession() gezeigt, die gefiel mir. Damit wollte ich es probieren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datenbank öffnen wann?
Hallo WernerWerner_Bayern hat geschrieben: ↑Fr, 17. Apr 2020 20:37 Selbstverständlich gibt es Row-locks, wir verwenden die tagtäglich:Code: Alles auswählen
pg_try_advisory_lock()
das sehe ich nicht so:
pg_try_advisory_lock() sind aber keine Reclocks auf Datenbankebene wie wir Sie von der DBF kennen die den Schreibzugriff auf einen Datensatz für ALLE sperren.
Sondern einfach ein System das Nummern (Schlüssel) als gesperrt markiert. Dabei wird kein Datenbank Eintrag selbst wie bei einer DBF gesperrt.
Anhand der als gesperrt markierten Nummer (Schlüssel) muss deine App entscheiden was Sie tun darf.
Ein andere App die sich nicht an deine Logik hinter pg_try_advisory_lock() hält kann jederzeit die Datenbank verändern.
Ganz im Gegensatz zur DBF hier kann KEINE andere App in einen gesperrten Record schreiben.
Du musst also dein Recordlocking App-Spezifisch selbst aufbauen.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: Datenbank öffnen wann?
Servus Carlo,
100% agree.
Klar, dem PG-Server ist das erstmal egal - wir sprechen hier von der Programmlogik und der Möglichkeit, sehr wohl Locking in Xbase++ unter PG zu implementieren. Der gleichzeitige Zugriff auf die Table außerhalb Xbase++ ist damit trotzdem möglich.
100% agree.
Klar, dem PG-Server ist das erstmal egal - wir sprechen hier von der Programmlogik und der Möglichkeit, sehr wohl Locking in Xbase++ unter PG zu implementieren. Der gleichzeitige Zugriff auf die Table außerhalb Xbase++ ist damit trotzdem möglich.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>