Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Проходил собеседование недавно и там был такой вопрос: In a highly concurrent system, why is it so hard to write a fool proof procedure that inserts a row into a table that wouldn’t violate any unique constraints? Я если честно не нашёлся что ответить. Может у кого есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 00:31 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Начните с гугл-транслейта, если не смогли перевести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 00:33 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Я понял вопрос. Но не знаю ответа. Потому и спрашиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 00:46 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Судя по названию темы -- нет, не поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 01:06 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282Проходил собеседование недавно и там был такой вопрос: In a highly concurrent system, why is it so hard to write a fool proof procedure that inserts a row into a table that wouldn’t violate any unique constraints? Я если честно не нашёлся что ответить. Может у кого есть идеи?А какие тут идеи? Наверное на уровни изоляций намекали. Пока не закомитишь, то и не прочитаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 01:31 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Хм. Получается, что надо использовать Serializable или UPDLOCK? Но мне кажется всё равно невозможно полностью избавиться от взаимоблокировок. Я вижу только один способ. Это изменять всегда изменять объекты в одном и том же порядке. Что нереально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 01:40 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282Хм. Получается, что надо использовать Serializable или UPDLOCK? Но мне кажется всё равно невозможно полностью избавиться от взаимоблокировок.Каша в голове у вас. Взаимоблокировки -- это побочный эффект обеспечения конкурентного доступа к данным через блокировочный механизм. А вас не про побочные эффекты спрашивают, а про основной механизм, так сказать. Darkness1282Я вижу только один способ. Это изменять всегда изменять объекты в одном и том же порядке. Что нереально.Почти любой порядок доступа к данным легко обсепечивается через очереди в любой их реализации. Но отклик будет страдать, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 01:53 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Что то я совсем запутался...Как звучал бы правильный ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 02:06 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Перед чтением или изменением объект блокируется. То есть другим транзакциям запрещается изменять или даже читать этот объект до тех пор, пока первая транзакция не закончит с ним работать. Нужно было просто рассказать про уровни изоляции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 02:08 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282Что то я совсем запутался...Как звучал бы правильный ответ? Ну, блин, я помню такой вопрос из практики. Констрейны-то не транзакционно проверяются сервером. У вас такого уровня доступа, чтобы програмно проверить их, как у сервера - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 02:10 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282Перед чтением или изменением объект блокируется. То есть другим транзакциям запрещается изменять или даже читать этот объект до тех пор, пока первая транзакция не закончит с ним работать. Нужно было просто рассказать про уровни изоляции?У вас вопрос про "procedure that inserts a row", т.е. никакого объекта перед вставкой еще нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 02:42 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282Что то я совсем запутался...Как звучал бы правильный ответ?На это вопрос правильным ответом была бы демонстрация вашего опыта или хотя бы теоретических знаний в вопросах обеспечения конкурентного доступа к данным. Критерии уж уточняйте у того, кто его вам задал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 02:44 |
|
||
|
Процедура вставки в системе с высокой степенью параллелизма
|
|||
|---|---|---|---|
|
#18+
Darkness1282, [q]hard to write a fool proof procedure that inserts a row into a table that wouldn’t violate any unique constraints?[/q] Наверно потому, что никто не проверяет наличие (идентичной) записи перед вставкой, а ловят это дело постфактум - через исключение? Автор вопроса предполагал, что в не "highly concurrent system" кто-то проверяет заранее вставляемую запись на неуникальность? Типа, в НЕнагруженной системе мы проверяем, а в нагруженной - времени нет. Странный паттерн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2019, 14:52 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39808626&tid=1687880]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 413ms |

| 0 / 0 |
