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

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

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

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

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

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

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

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

спасибо за развернутый ответ.
Можете дать ссылку на документацию, которая объясняет слово "версионники" в рамках postgres
...
Рейтинг: 0 / 0
01.09.2015, 20:40
    #39040947
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог (nolock) в PostgreSQL
...
Рейтинг: 0 / 0
02.09.2015, 11:27
    #39041280
кириллk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог (nolock) в PostgreSQL
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
02.09.2015, 11:30
    #39041287
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог (nolock) в PostgreSQL
кирилл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
02.09.2015, 11:47
    #39041314
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог (nolock) в PostgreSQL
кирилл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
02.11.2015, 05:31
    #39092319
gmsalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог (nolock) в PostgreSQL
p2.спустя 8+ лет так и не раскрыт вопрос - зачем? чем именно ты мешаешь другим танцевать?

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

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

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

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


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