Size: a a a

DBA - русскоговорящее сообщество

2021 March 29

N

Nikolay in DBA - русскоговорящее сообщество
у меня вопрос только про 2PL. нужен ли он в каких-то еще уровнях изоляции транзакций, кроме serializable. Пока я вижу, что не нужен. 2PL - это "дорогое" удовольствие )
источник

N

Nikolay in DBA - русскоговорящее сообщество
и для serializable он наверное не обязателен. скорее всего есть и варианты с оптимистическими блокировками, но у них, конечно будут свои недостатки
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Nikolay
у меня вопрос только про 2PL. нужен ли он в каких-то еще уровнях изоляции транзакций, кроме serializable. Пока я вижу, что не нужен. 2PL - это "дорогое" удовольствие )
В "блокировочнике" он нужен всегда, т.е. Вы совершенно неправы.
И, аналогично, во всех "версионниках" для записи, и для предотвращения того, о чём я написал выше, используется он же.
Впрочем, не хотите слушать — дело Ваше, мне-то что...
источник

A

Adv0cat in DBA - русскоговорящее сообщество
Yaroslav Schekin
В "блокировочнике" он нужен всегда, т.е. Вы совершенно неправы.
И, аналогично, во всех "версионниках" для записи, и для предотвращения того, о чём я написал выше, используется он же.
Впрочем, не хотите слушать — дело Ваше, мне-то что...
Николай напишет свою бд без блокировочника и опровергнет ваше высказывание про “нужен всегда” 😅
источник

N

Nikolay in DBA - русскоговорящее сообщество
Yaroslav Schekin
В "блокировочнике" он нужен всегда, т.е. Вы совершенно неправы.
И, аналогично, во всех "версионниках" для записи, и для предотвращения того, о чём я написал выше, используется он же.
Впрочем, не хотите слушать — дело Ваше, мне-то что...
мне хочется услышать. Расскажите. в read commited on нужен ?
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Adv0cat
Николай напишет свою бд без блокировочника и опровергнет ваше высказывание про “нужен всегда” 😅
Так написаны уже. На практике есть какие-то СУБД, использующие OCC, например.
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Nikolay
мне хочется услышать. Расскажите. в read commited on нужен ?
Да, конечно.
Любая блокировка на запись удерживается до конца транзакции. Так же, как и т.н. schema modification locks (на любом уровне изоляции).
источник

N

Nikolay in DBA - русскоговорящее сообщество
вот есть 3 таблицы. у меня read commited. сначала update table1, read table2, read table3. в Oracle lock на read table2 не будет в момент чтения read table3.
источник

N

Nikolay in DBA - русскоговорящее сообщество
Yaroslav Schekin
Да, конечно.
Любая блокировка на запись удерживается до конца транзакции. Так же, как и т.н. schema modification locks (на любом уровне изоляции).
а на чтение?
источник

N

Nikolay in DBA - русскоговорящее сообщество
2PL держит ведь read-lock до конца транзакции!
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Nikolay
Two-phase locking используется только для уровня serializable или его используют и для других уровней? Если для других, то для каких?
Two phase commit может?
источник

N

Nikolay in DBA - русскоговорящее сообщество
то, что write lock они держат до конца транзакции - это все согласны. вопрос про read lock.
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Nikolay
вот есть 3 таблицы. у меня read commited. сначала update table1, read table2, read table3. в Oracle lock на read table2 не будет в момент чтения read table3.
Разве Oracle вообще держит read locks на записи? Я думал, это чистый "версионник", нет?

> в Oracle lock на read table2 не будет в момент чтения read table3.

Правда? Ну так попробуйте "DROP TABLE table2;" в параллельной транзакции (до завершения первой, конечно) — неужели получится?
источник

N

Nikolay in DBA - русскоговорящее сообщество
Yaroslav Schekin
Разве Oracle вообще держит read locks на записи? Я думал, это чистый "версионник", нет?

> в Oracle lock на read table2 не будет в момент чтения read table3.

Правда? Ну так попробуйте "DROP TABLE table2;" в параллельной транзакции (до завершения первой, конечно) — неужели получится?
100 раз делал такой drop.
источник

Z1

Zzz 111 in DBA - русскоговорящее сообщество
Подскажите новичку, может ли первичный ключ в одной таблице ссылаться на первичный ключ в другой (как если бы один из них был внешним)?
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Nikolay
2PL держит ведь read-lock до конца транзакции!
Ещё раз, MS SQL — типичный "блокировочник" (т.е. использует SS2PL) при обычных настройках, и read lock в READ COMMITTED до конца транзакции не держит.
источник

N

Nikolay in DBA - русскоговорящее сообщество
Yaroslav Schekin
Ещё раз, MS SQL — типичный "блокировочник" (т.е. использует SS2PL) при обычных настройках, и read lock в READ COMMITTED до конца транзакции не держит.
вот. если он не дердит read lock до конца транзакции, то это не 2PL.
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Nikolay
100 раз делал такой drop.
Обожемой, ну и дрянь, а не СУБД, если это правда. ;(
Кто-нибудь может подтвердить сказанное?
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Zzz 111
Подскажите новичку, может ли первичный ключ в одной таблице ссылаться на первичный ключ в другой (как если бы один из них был внешним)?
Одно с другим не связано, т.е. да, может.
источник

N

Nikolay in DBA - русскоговорящее сообщество
и truncate можно сделать и drop можно сделать в oracle в read commited. но это , конечно только в тех случая, которые были описаны. Если кто-то сделал Insert/update/delete и т.д, то будет ожидание. то все потому, что не держит он блокировок уже после того, как прочел таблицу
источник