PostgreSQL, эквивалентный из подсказки NoLock SQLSERVER

В SQLServer можно использовать синтаксис" (nolock)", чтобы гарантировать, что запрос не блокирует таблицу или не заблокирован другими запросами, блокирующими ту же таблицу. например.

SELECT * FROM mytable (nolock) WHERE id = blah

Каков эквивалентный синтаксис в Пост-ГРЭС? Я нашел некоторую документацию относительно таблицы, привязывающей PG (http://www.postgresql.org/docs/8.1/interactive/sql-lock.html), но кажется приспособленным в том, как заблокировать таблицу, не удостовериться, что это не заблокировано.

38
задан Cerin 6 March 2010 в 23:56
поделиться

2 ответа

SELECT не блокирует никакую таблицу в PostgreSQL, если вам не нужна блокировка:

SELECT * FROM tablename FOR UPDATE;

PostgreSQL использует MVCC для минимизации блокировки конкуренция, чтобы обеспечить разумную производительность в многопользовательских средах. Читатели не конфликтуют ни с писателями, ни с другими читателями.

54
ответ дан 27 November 2019 в 03:38
поделиться

Я провел некоторое исследование, и оказалось, что подсказка NOLOCK в SQL Server примерно соответствует уровню изоляции транзакции READ UNCOMMITTED. В PostgreSQL вы можете установить READ UNCOMMITTED, но он молча повышает уровень до READ COMMITTED. READ UNCOMMITTED не поддерживается.

Документация PostgreSQL 8.4 по изоляции транзакций: http://www.postgresql.org/docs/8.4/static/transaction-iso.html

12
ответ дан 27 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: