|
|
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Существует ли аналог (nolock) в PostgreSQL ??? А ля MS SQL select * from mytable (nolock) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 18:05 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
sarkСуществует ли аналог (nolock) в PostgreSQL ??? А ля MS SQL select * from mytable (nolock) А что такое nolock? И зачем он нужен? По умолчанию простой SELECT ничего и так не лочит, ибо версионник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2007, 18:07 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron, Возник тот же вопрос Чтобы можно было "грязно" читать и не мешать другим в работе с большой таблицей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:38 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
кириллkи не мешать другимспустя 8+ лет так и не раскрыт вопрос - зачем? чем именно ты мешаешь другим танцевать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:47 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
кириллkAndrey Daeron, Возник тот же вопрос Чтобы можно было "грязно" читать и не мешать другим в работе с большой таблицей грязного чтения в пг нет. кажется можно сказать "DIRTY READ" для уровня изоляции, но будет по факту "READ COMMITED" по понятным причинам версионники не рвутся осуществлять уровень dirty read , т. к. они специально для того, чтобы он был не сильно нужен и придуманы. если вас не устраивает Read commited -- вам надо подумать о том, что вы занимаетесь не своим делом или хотя бы не на своём месте. (не со своей СУБД). в основном. но иногда возможность ditry read была бы очень даже не вредна для сильно специфических задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 17:48 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
qwwq, спасибо за развернутый ответ. Можете дать ссылку на документацию, которая объясняет слово "версионники" в рамках postgres ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2015, 18:48 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:27 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
кирилл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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:30 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
кирилл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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 11:47 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
p2.спустя 8+ лет так и не раскрыт вопрос - зачем? чем именно ты мешаешь другим танцевать? В MSSQL (во всяком случае в предыдущих версиях) блокировалась страница данных. Предположим, на странице есть значения от 1 до 20. В этом случае, если транзакция затрагивает, к примеру, значение 5, то прочитать инфу о значениях 1-4 и 6-20 нельзя. Так как блокируется транзакцией. И если транзакция длинная, то "все в очередь сукины дети". Для этого с какой-то версии mssql и был введен хинт with (nolock). Он позволял считывать любые данные вне зависимости от блокировок. И если изменяется код 5 на 555, то при использовании данного хинта результат даст 5 без ожидания завершения транзакции... Очень полезная фишка, так как даже если блокировка идет на уровне строки, то зачастую нужны данные, которые могут не меняться вообще. А уже если блокировка на уровне страницы, то это может быть и добавление и удаление и изменение данных... Вроде как то так, если мне не изменяет память... Поэтому я бы сформулировал вопрос так: 1. по-умолчанию на уровне чего у pg ставится блокировка. 2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакции, а если нет, то как это можно сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 05:31 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
gmsalex2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакциида. текущие закоммиченные данные на момент старта селекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 08:46 |
|
||
|
Аналог (nolock) в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
gmsalexВ MSSQL (во всяком случае в предыдущих версиях) блокировалась страница данных.если отбросить механизм эскалации, то из всех "...их" только первая (6.5) версия лишь частично поддерживала блокировку уровня строки. Сомневаюсь, что авторы, не способные осилить документацию ПГ или хотя бы поставить простой эксперимент, имеют основания распространять столь дремучий опыт на современность всех баз данных. gmsalexОчень полезная фишкаиз очевидного - нецелостный результат транзакции для полноценной СУБД это один из самых страшных кошмаров ACID. Из менее очевидного - вероятность пропустить или считать закомиченную и никем незалоченную строку несколько раз при фетче многострочного результата. gmsalexПоэтому я бы сформулировал вопрос так: 1. по-умолчанию на уровне чего у pg ставится блокировка. 2. если я запрошу select * и идет длинная транзация по этой таблице, получу ли я данные до окончания транзакции, а если нет, то как это можно сделать...вот так и надо было ставить вопрос - не "где тут на кухне у вас лобзик" из-за старой студенческой привычки, а "чем отрезать колбасу". Начали работать с незнакомой СУБД, открываете документацию и читаете. От корки и до корки, чтобы не вляпаться в еще какие неожиданности, которые могут даже быть синтаксически не обозначены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 09:02 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=102&tid=1997664]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 384ms |

| 0 / 0 |
