Frage

In SQLServer können Sie Syntax „(nolock)“, um sicherzustellen, die Abfrage die Tabelle nicht sperren oder nicht durch andere Abfragen Sperren der gleichen Tabelle gesperrt. z.

SELECT * FROM mytable (nolock) WHERE id = blah

Was ist die äquivalente Syntax in Postgres? Ich fand eine Dokumentation auf Tabellensperren in PG ( http: //www.postgresql .org / docs / 8.1 / interactive / sQL-lock.html ), aber es ist alles darauf ausgerichtet scheint, wie zu Sperre ein Tisch, es ist nicht sicher, nicht gesperrt .

War es hilfreich?

Lösung

Eine SELECT-Sperre keine Tabelle in PostgreSQL, es sei denn, Sie eine Sperre wollen:

SELECT * FROM tablename FOR UPDATE;

PostgreSQL verwendet MVCC Sperrenkonflikte zu minimieren, um zu für eine angemessene Leistung in Mehrbenutzerumgebungen ermöglichen. Leser nicht in Konflikt steht mit den Autoren noch anderen Lesern.

Andere Tipps

Ich habe einige die Forschung getan und es scheint, dass der NOLOCK Hinweis in SQL Server ist in etwa die gleichen wie READ UNCOMMITTED Transaktionsisolationsstufe. In PostgreSQL können Sie einstellen, READ UNCOMMITTED, aber es wertet still um das Niveau zu READ COMMITTED. READ UNCOMMITTED wird nicht unterstützt.

PostgreSQL 8.4 Dokumentation zur Transaktion Isolation: http: // www. postgresql.org/docs/8.4/static/transaction-iso.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top