powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог (nolock) в PostgreSQL
13 сообщений из 13, страница 1 из 1
Аналог (nolock) в PostgreSQL
    #34310322
sark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует ли аналог (nolock) в PostgreSQL ??? А ля MS SQL select * from mytable (nolock)
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #34310326
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sarkСуществует ли аналог (nolock) в PostgreSQL ??? А ля MS SQL select * from mytable (nolock)
А что такое nolock?
И зачем он нужен?
По умолчанию простой SELECT ничего и так не лочит, ибо версионник.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Аналог (nolock) в PostgreSQL
    #39040878
кириллk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron,

Возник тот же вопрос

Чтобы можно было "грязно" читать и не мешать другим в работе с большой таблицей
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39040884
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кириллkи не мешать другимспустя 8+ лет так и не раскрыт вопрос - зачем? чем именно ты мешаешь другим танцевать?
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39040885
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кириллkAndrey Daeron,

Возник тот же вопрос

Чтобы можно было "грязно" читать и не мешать другим в работе с большой таблицей

грязного чтения в пг нет.
кажется можно сказать "DIRTY READ" для уровня изоляции, но будет по факту "READ COMMITED"

по понятным причинам версионники не рвутся осуществлять уровень dirty read , т. к. они специально для того, чтобы он был не сильно нужен и придуманы.

если вас не устраивает Read commited -- вам надо подумать о том, что вы занимаетесь не своим делом или хотя бы не на своём месте. (не со своей СУБД).
в основном.
но иногда возможность ditry read была бы очень даже не вредна для сильно специфических задач.
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39040911
кириллk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

спасибо за развернутый ответ.
Можете дать ссылку на документацию, которая объясняет слово "версионники" в рамках postgres
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39040947
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39041280
кириллk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Вы только подвердили мои слова

Table 13-1. Standard SQL Transaction Isolation Levels

Isolation Level Dirty Read Nonrepeatable Read Phantom Read Read uncommitted Possible Possible Possible Read committed Not possible Possible Possible Repeatable read Not possible Not possible Possible Serializable Not possible Not possible Not possible
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39041287
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кириллkqwwq,

Вы только подвердили мои слова

Table 13-1. Standard SQL Transaction Isolation Levels

Isolation Level Dirty Read Nonrepeatable Read Phantom Read Read uncommitted Possible Possible Possible Read committed Not possible Possible Possible Repeatable read Not possible Not possible Possible Serializable Not possible Not possible Not possible

а прочесть 2 предложения в документации сразу после этой таблицы вам кто то помешал?

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39041314
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кириллkqwwq,

Вы только подвердили мои слова

Table 13-1. Standard SQL Transaction Isolation Levels

Isolation Level Dirty Read Nonrepeatable Read Phantom Read Read uncommitted Possible Possible Possible Read committed Not possible Possible Possible Repeatable read Not possible Not possible Possible Serializable Not possible Not possible Not possible

малчег, вы только подтвердили, что вы <.....мяхко говоря -- дятил..........>

что нередко среди м$скльщиков , но не обязательно.

там же In PostgreSQL , you can request any of the four standard transaction isolation levels. But internally , there are only three distinct isolation levels, which correspond to the levels Read Committed, Repeatable Read, and Serializable . When you select the level Read Uncommitted you really get Read Committed, and phantom reads are not possible in the PostgreSQL implementation of Repeatable Read, so the actual isolation level might be stricter than what you select. This is permitted by the SQL standard: the four isolation levels only define which phenomena must not happen, they do not define which phenomena must happen. The reason that PostgreSQL only provides three isolation levels is that this is the only sensible way to map the standard isolation levels to the multiversion concurrency control architecture.
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39092319
gmsalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p2.спустя 8+ лет так и не раскрыт вопрос - зачем? чем именно ты мешаешь другим танцевать?

В MSSQL (во всяком случае в предыдущих версиях) блокировалась страница данных.
Предположим, на странице есть значения от 1 до 20.
В этом случае, если транзакция затрагивает, к примеру, значение 5, то прочитать инфу о значениях 1-4 и 6-20 нельзя.
Так как блокируется транзакцией. И если транзакция длинная, то "все в очередь сукины дети".
Для этого с какой-то версии mssql и был введен хинт with (nolock).
Он позволял считывать любые данные вне зависимости от блокировок.
И если изменяется код 5 на 555, то при использовании данного хинта результат даст 5 без ожидания завершения транзакции...

Очень полезная фишка, так как даже если блокировка идет на уровне строки, то зачастую нужны данные, которые могут не меняться вообще. А уже если блокировка на уровне страницы, то это может быть и добавление и удаление и изменение данных...

Вроде как то так, если мне не изменяет память...

Поэтому я бы сформулировал вопрос так:
1. по-умолчанию на уровне чего у pg ставится блокировка.
2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакции, а если нет, то как это можно сделать...
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39092367
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gmsalex2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакциида.
текущие закоммиченные данные на момент старта селекта.
...
Рейтинг: 0 / 0
Аналог (nolock) в PostgreSQL
    #39092375
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gmsalexВ MSSQL (во всяком случае в предыдущих версиях) блокировалась страница данных.если отбросить механизм эскалации, то из всех "...их" только первая (6.5) версия лишь частично поддерживала блокировку уровня строки. Сомневаюсь, что авторы, не способные осилить документацию ПГ или хотя бы поставить простой эксперимент, имеют основания распространять столь дремучий опыт на современность всех баз данных.
gmsalexОчень полезная фишкаиз очевидного - нецелостный результат транзакции для полноценной СУБД это один из самых страшных кошмаров ACID. Из менее очевидного - вероятность пропустить или считать закомиченную и никем незалоченную строку несколько раз при фетче многострочного результата.
gmsalexПоэтому я бы сформулировал вопрос так:
1. по-умолчанию на уровне чего у pg ставится блокировка.
2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакции, а если нет, то как это можно сделать...вот так и надо было ставить вопрос - не "где тут на кухне у вас лобзик" из-за старой студенческой привычки, а "чем отрезать колбасу".
Начали работать с незнакомой СУБД, открываете документацию и читаете. От корки и до корки, чтобы не вляпаться в еще какие неожиданности, которые могут даже быть синтаксически не обозначены.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог (nolock) в PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]