powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос про неизбежность deadlock-ов
25 сообщений из 76, страница 3 из 4
Теоретический вопрос про неизбежность deadlock-ов
    #38314818
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronдержать != хлебать
Ага, т.е. пользвоатель занимает ресурс, который не в состоянии на данный момент
использовать. Этакая собака на сене.

mikronПопробуйте доказать что любую многопользователскую систему можно привести к
держанию только одного лока и соблюсти все требования АЦИД.

А доказательство существования философского камня не хотите? Перечитайте внимательно мой
второй пост в этой теме.

vromanovПервый уменьшил количество слеледки залочив строку с селедкой. Второй
уменьшил остаток молока и залочил кол-во молока.
А зачем они их залочили? Достаточно и того факта, что они их изменили. Попытка повторного
изменения будет распознана как update conflict и никакого взаимного лока не будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314822
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS: Как я уже сказал? NumbusDB существует. Она многопользовательская и в ней нет дедлоков.
Но как они этого добились, я рассказать не смогу: при попытке вкурить её архитектуру у
меня срывает крышу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314955
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovPS: Как я уже сказал? NumbusDB существует. Она многопользовательская и в ней нет дедлоков.
Но как они этого добились, я рассказать не смогу: при попытке вкурить её архитектуру у
меня срывает крышу.

Дай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру...
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314956
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И давайте контрольно сверимся, что мы понимаем под дедлоком:
я понимаю это как ситуацию, когда два и более
процесса начинают ожидать друг-друга из-за занятых ресурсов, часть которых сами же и не отпускают,
а вы?
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314961
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronvromanovпропущено...

Аналогия не верна..
Какая аналогия? С чем? Я вобще аналогий не приводил. О чём вы?
Мне кажется, вы ломитесь в открытую дверь. Всё что вы говорите - я почти во всём с вами согласен
(за исключением в вашем примере: ресурс после изменения нельза освобождать до завершения транзакции),
и никогда этому не возражал. Я даже привёл наглядный пример, где этот метод не работает. 14500341
Давайте его обсудим.
mikron, мы приводим примеры из жизни или распределенной системы, а коллеги говорят о каком-то ядре СУБД, которому копию ресурса сделать — раз плюнуть. Может это потому, что раздел "проектирование бд"?! Как им объяснить, что даже попытка курьеров сначала обзванивать склады и резервировать товар может привести к дедлоку резервирований: даже в случае, когда курьер отказывается от формирования заказа, если нет части заказа, мы сталкиваемся с ситуацией отказа двум клиентам, хотя одному из них могли собрать заказ...
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойДай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру...
http://tech.groups.yahoo.com/group/Firebird-Architect/messages

АнатоЛойдавайте контрольно сверимся, что мы понимаем под дедлоком:
я понимаю это как ситуацию, когда два и более процесса начинают ожидать друг-друга из-за
занятых ресурсов, часть которых сами же и не отпускают , а вы?

Аналогично. Ключевое условие выделено.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315129
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойДай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру...
http://tech.groups.yahoo.com/group/Firebird-Architect/messages

Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил?
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315132
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про курьера
Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315136
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovПро курьера
Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала.
Задумайся, что делают на самих складах при звонках курьера. На складах резервируют товар при звонке курьера? Если да, то при первом или втором? На одном складе находится только один диспетчер? Если нет, как они резервируют один и тот же товар одновременно для разных курьеров? Как быть, если пока мы оформляли резерв на сотую позицию курьеру К1, второй диспетчер зарезервировал всю 101ую позицию курьеру 2...
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315138
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойDimitry Sibiryakovпропущено...

http://tech.groups.yahoo.com/group/Firebird-Architect/messages

Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил?
Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :)
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315140
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойАнатоЛойпропущено...

Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил?
Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :)
А вот и альтернативная картинка :
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315143
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойАнатоЛойпропущено...

Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :)
А вот и альтернативная картинка :
И еще один документ
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315146
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойЕсли нет, как они резервируют один и тот же товар одновременно для разных
курьеров?
Никак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину
склада, второй - правую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315148
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойЗадумайся, что делают на самих складах при звонках курьера. На складах резервируют товар при звонке курьера? Если да, то при первом или втором? На одном складе находится только один диспетчер? Если нет, как они резервируют один и тот же товар одновременно для разных курьеров? Как быть, если пока мы оформляли резерв на сотую позицию курьеру К1, второй диспетчер зарезервировал всю 101ую позицию курьеру 2...
Резервируют при втором звонке. Диспетчер берет товар и откладывает его в лоток для этого курьера. Один товар в один момент времени может откладывать только один диспетчер. Это называется блокировка. Не надо путать с лком.
Если не хватает 101 позиции. Значит делается ролбак. Все товары разрезервируются, и курьер начинает резервировать снова.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315149
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНикак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину
склада, второй - правую.
Ну или у них карточки для товаров. И в один момент времени карточка одного товара доступна только одному диспетчеру.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315152
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovЭто называется блокировка. Не надо путать с лком.
А в чём разница?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315154
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой,

When the Viewer’s Transaction Manager Atom sees the
commit of transaction 355555, it tells transaction 377777,
“Sorry, your update failed.”
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315155
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойЕсли нет, как они резервируют один и тот же товар одновременно для разных
курьеров?
Никак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину
склада, второй - правую.

То бишь курьер, звоня на склад, звонит по очереди то одному, то другому диспетчеру. Не многовато ли нужно знать курьеру?

Ну или диспетчеры переключают друг на друга. Тогда куча ожиданий переключений курьером, если список для диспетчеров не поделен в соотвествии с вышеупомянутым "мировым порядком номеклатуры". Или один диспетчер постоянно курит вместо работы - в его части списка не поступают заказы...
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315156
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА в чём разница?
Как же я хреново печатаю :(
дедлок там имелся в виду
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315157
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovDimitry SibiryakovНикак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину
склада, второй - правую.
Ну или у них карточки для товаров. И в один момент времени карточка одного товара доступна только одному диспетчеру.
Да-да, проходили. Даже не развиваю тему, а то вернёмся к копии карточек :).
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315163
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойТо бишь курьер, звоня на склад, звонит по очереди то одному, то другому
диспетчеру. Не многовато ли нужно знать курьеру?
Нет, ему достаточно знать телефон диспетчера, который ведёт нужный ему товар. И таки да,
курьеры сериализуются на диспетчере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315208
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАнатоЛой,

When the Viewer’s Transaction Manager Atom sees the
commit of transaction 355555, it tells transaction 377777,
“Sorry, your update failed.”

ViPRosАнатоЛой,

When the Viewer’s Transaction Manager Atom sees the
commit of transaction 355555, it tells transaction 377777,
“Sorry, your update failed.”
Спасибо, тоже уже вкурил.
Итог: серебряной пули не нашлось. На страницах 15-17 документа "NuoDB® Emergent
Architecture" от 2013 года для не сильно вооружённого глаза написано, как система обнаруживает и устраняет таки возникающие у сессий deadlock'и.
Особенно понравилось "All progress stops, until the two transaction Manager Atoms exchange
information and the deadlock is found ."

Жаль, что посылка Дмитрия о том, что в NimbusDB (теперь уже читай NuoDB) deadlock'ов нет, не подтвердилась... Их "успешно" ищут и устраняет ответственные компоненты системы: "Each of the Transaction Managers checks for a “cycle in the dependency graph”,
or in English, a closed loop in the list of transactions waiting for each other."

А безвинно попавшие в дедлок получают отлуп: "The Viewer’s transaction 377777 gets a deadlock error ",
"The Transaction Manager Atom managing the
transaction with the highest transaction identifier tells
its Transaction Engine to undo the last SQL statement
by that transaction and send it a deadlock error. The
application can choose to continue, commit, or roll back,
but the particular statement it tried cannot succeed
unless the application rolls back the transaction and
retries the whole operation. Well-behaved applications
roll back their transactions after a deadlock error."
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38315221
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По русски: "Дедлоки случаются" и в NuoDB, приложения получают выбор, как же с ними поступать, а "благонравные приложения" откатывают свои транзакции после получения сообщений о случившемся дедлоке с их участием.

Итог: причины возникновения дедлоков были понятны всем участникам и так.
Примеры функциональных требований можно плодить пачками.
Основной шаблон получения таких требований:
п.1) вынести за рамками подконтрольного системе все условия возникновения дедлока;
Для ядра СУБД: сессии, которые плодят транзакции и блокируют записи, как это удобно им.
Для распределённой СУБД: те же беспорядочные транзакции.
Для любой разрабатываемой системы: ограничить её функциональные рамки, чтобы условия возникновения находились за рамками системы.

п.2) вынести за рамки архитектурных или технологических возможностей реализацию известных алгоритмов поиска и устранения дедлока;

п.3) добавить ограничения (производительность, эффективность использования ресурсов, просто здравый смысл :)) , которые будут работать на слабые стороны того или иного алгоритма.

Пример для нашего склада и курьеров: мы пишем программу для курьеров, но никак не управляем складами (ни процессами/организацией, ни IT-системой управления складом). Таким образом условия возникновения дедлока находятся за рамками нашей системы.

ТС, аууууу :).
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38352472
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovПро курьера
Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала.
Элегантное решение, демонстрирует каким образом путём доп. затрат можно избежать деадлока. Оно так же гарантирует что курьер всегда получит оптимальный план.
Усложним/дополним модель экспедиторами, которые проставляют артикли на склады.
Можно ли теперь гарантировать отсутствие деадлоков и одновременно составление оптимального плана для курьера.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38352550
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока получается, в принципе всегда возможна ситуация, где для разрабатываемой системы риск деадлока определяется только функциональными требованиями к системе. Правда разумность функциональных требований не всегда однозначна.
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 3 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос про неизбежность deadlock-ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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