aus bestimmten Gründen muss ich Postgres dazu bekommen nur im Einbenutzer-Betrieb (eine Remote-Verbindung) zu laufen (evt. max_connections=1) und kein Locking durchzuführen.
Hat jemand einen Tipp, wie ich Postrges dazubringen kann auf Locking zu verzichten (setzen von Sperren+Überprüfen von gesetzten Sperren)?
Gibt es evt. builtin-Features und falls nicht, welche Stellen im Code sollte ich mir anschauen?
Sollte so gehen, ungetestet. Was bleibt, sind lokale Anmeldungen, und vermutlich belegen Dinge wie Autovacuum auch eine Verbindung, bin ich mir aber grad nicht sicher. Wozu brauchst Du das?
Bei einem UPDATE werden auch LOCKs gesetzt, selbst ein SELECT setzt einen LOCK auf die Daten, die gelesen wurden (damit jemand anderes die nicht zwischenzeitlich löscht).
Ganz verhindern kann man das nicht.
Bleibt die Frage offen, was der Originalposter vorhat - ein paar mehr Details wären (wie üblich) hilfreich.
Wie ads schon sagte, werden bei den Operationen automatisch Sperren gesetzt und dabei auch jedes Mal nach bereits gesetzten Sperren geprüft. Da ich diesen Overhead im Single-User-Betrieb nicht benötige, würde ich den gern eleminieren.
Aus welchen Gründen ist uninteressant. Mich interessiert halt, wie man das realisieren kann, ob es dazu von Postgres Möglichkeiten gibt - was ich nicht glaube.
Eine Datenbank im Single-User Betrieb zu betreiben ist (in den meisten Fällen) auch nicht das, was du möchtest. Wer kümmert sich um Maintenance (aka VACUUM, Backup)? Dafür brauchst du wiederum Locking.
Das mein Vorhaben nicht dem eigentlichen Zweck und dem Standard-Betrieb von DBMSes entspricht ist mir wohl bekannt, ebenso die Arbeitsweise derer.
Ich wollte eigentlich nur wissen, ob jemandem eine Möglichkeit bekannt ist, bevor ich das selbst realisiere.
Um alle von dir aufgezählten Belange würde ich mich dann selbst kümmern.
Um meine eigene Aussage zu verdeutlichen: mit dem “zwischenzeitlich löschen” meinte ich ein “DROP DATABASE” und ähnliche, nicht transaktionssichere Aktionen. Ein simples DELETE wird bereits von MVCC erledigt und benötigt kein LOCKing.