powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос про неизбежность deadlock-ов
76 сообщений из 76, показаны все 4 страниц
Теоретический вопрос про неизбежность deadlock-ов
    #38301740
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, интересует теоретический вопрос, бывают ли такие ситуации,
когда на этапе разработки системы возникает "ситуация потенциално возможного" (риск) деадлока, которую нельзя устранить? Другими словами, система полностью подконтрольна, внешних источников помех нет, но задачи такие, что деадлок становится реалным риском, который принимается как сущность, данная нам свыше.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38301753
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты эта... точно не путаешь deadlock и update conflict?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38301927
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы эта... точно не путаешь deadlock и update conflict?..

Речь иммено о деадлоках. Система конечно многоползовательская: куча сессий с непредсказуемым поведением.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38301990
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При куче сессий с непредсказуемым поведением шанс дедлока будет как минимум на любом блокировочнике, и вряд ли с этим можно будет что-то сделать.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38302019
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronРечь иммено о деадлоках.
Деадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38302205
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronКоллеги, интересует теоретический вопрос, бывают ли такие ситуации,
когда на этапе разработки системы возникает "ситуация потенциално возможного" (риск) деадлока, которую нельзя устранить?


Она собственно никогда и не исчезает, эта ситуация, если есть больше одного пользователя, или есть многозадачность какая-то --
всегда есть вероятность возникновения deadlock-ов.

mikronДругими словами, система полностью подконтрольна, внешних источников помех нет, но задачи такие, что деадлок становится реалным риском, который принимается как сущность, данная нам свыше.

Риск дедлока всегда есть, может быть достаточно маленький, но есть.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38302208
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmikronРечь иммено о деадлоках.
Деадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет.


Здрасте, очень даже есть.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38302243
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivОна собственно никогда и не исчезает, эта ситуация...
Риск дедлока всегда есть, может быть достаточно маленький, но есть.
Другими словами, на этапе проектирования был выявлена потенциальная ситуация дед дока,и нету возможности её исправить изменив порядок выполнения запросов и деталей реализации?т.е именно функциональные требовани определяют риск деадлока. Приведете пожалуйста пример. Я таких как-то не найду. Всегда находится решение. Не забывайте, система в разработке и можно любое поведение изменить. Не изменяемы толко функциональные требования к системе.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38302516
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronт.е именно функциональные требовани определяют риск деадлока. Приведете пожалуйста пример. Я таких как-то не найду.Не думаю, что найдете. Всегда можно переписать так, что проблема уйдет.

Даже в случае багов, например когда разные потоки распараллеленного запроса лочат друг друга, обычно есть выход.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38303643
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЗдрасте, очень даже есть.
пожалуйста, покажите направление поиска. А то пока как в анекдоте, чувствую, что теоретически - литр, а математически обосновать не могу.
В смылсе, не могу найти примера, когда нельзя устранить деадлок. но может он всё-таки существует.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38304633
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronВ смылсе, не могу найти примера, когда нельзя устранить деадлок. но может он всё-таки существует.
Лично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38304902
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЛично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить
Разрешаю разгласить тайну: показывайте эту строчку.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38305062
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronsoftwarerЛично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить
Разрешаю разгласить тайну: показывайте эту строчку.
Подсказываю: для того, чтобы дедлок имел шанс возникнуть, должны быть выполнены некоторые условия. Существует техническая возможность сравнительно просто перестроить работу любой произвольной ИС таким способом, чтобы одно из этих условий заведомо не выполнялось.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38305569
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы все исходите в ваших рассуждениях из того, что порядок обращения к ресурсам системы детерминирован. В таком случае, если порядок можно менять, то всегда можно найти

Но это не всегда так, есть системы, где порядок доступа к ресурсам не определен вообще, случаен.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38305629
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivесть системы, где порядок доступа к ресурсам не определен вообщеДидлок - следствие конкуренции процессов за ресурсы. Нет конкуренции, нет дидлоков.

P.S. "В очередь, сукины дети !" ©
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38306021
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivесть системы, где порядок доступа к ресурсам не определен вообще, случаен.

Но и в них дедлока можно избежать если отпускать занятый ресурс прежде чем становиться в
очередь за новым.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38306069
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Можно, если это можно делать, и можно это контролировать.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38306800
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA MasterZiv есть системы, где порядок доступа к ресурсам не определен вообще
Дидлок - следствие конкуренции процессов за ресурсы. Нет конкуренции, нет дидлоков.
P.S. "В очередь, сукины дети !" ©


Правильно.
Поэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :).
Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки .
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38306835
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarermikronпропущено...

Разрешаю разгласить тайну: показывайте эту строчку.
Подсказываю: для того, чтобы дедлок имел шанс возникнуть, должны быть выполнены некоторые условия. Существует техническая возможность сравнительно просто перестроить работу любой произвольной ИС таким способом, чтобы одно из этих условий заведомо не выполнялось.

1. softwarer, непонятно что такое "произвольной ИС".
2. mikron, непонятно что такое "система полностью подконтрольна".
3. mikron, непонятно что такое "внешних источников помех нет".

4. mikron, любой путь ухода от дедлока потребует дополнительных затрат со стороны системы:
1) дополнительные ресурсы памяти;
2) дополнительные вычисления;
3) дополнительное время на обработку;

или может "упереться" в нефункциональные требований (при имеющихся ограничениях в вычислительных ресурсах):

1) максимальное время обработки пакета не должно превышать ...;
2) количество повторных попыток обработки пакета не должно превышать ...;
3) время ожидания пакета до обработки не должно превышать ...;

Какая-то тонкость кроется в твоём ограничении "Не изменяемы только функциональные требования к системе"...

Если нет нефункциональных требований ("быстрая" обработка множества ресурсов) и архитектурных требований ("должно" быть множество потоков/процессов/процессоров), то чисто архитектурные решения для ухода от риска дедлока найдутся: здесь уже озвучено "В очередь!" и ещё пара-тройка найдётся даже на википедии...
Озвучь, в чём твой риск дедлока состоит? :).

Привожу теоретический пример:

1. Среда:
1.1. В системе есть множество ресурсов;
1.2. Есть внешняя среда, из которой хаотично в систему поступают "пакеты";
1.3. Содержимое пакета: критерий (условие отбора подмножества ресурсов) и задача для обработки ресурсов из этого подмножества;
1.4. подмножества, отобранные по критериям пакетов, могут пересекаться.

2. Задача системы:
"обрабатывать" пакеты: находить ресурсы по критериям и выполнять над каждым из ресурсов поставленную задачу.

3. Функциональные требования (как следствие свойств ресурса и характера задач)
3.1. Над конкретным ресурсом в один момент времени может выполняться только одна задача;
3.2. Ресурсы, отобранные по критерию одного пакета, должны обрабатываться "как единое целое":
3.2.1. чтобы пакет считался обработанным, должен быть обработан каждый ресурс, указанный в пакете;
3.2.2. пока в пакете есть необработанные ресурсы, уже обработанные ресурсы пакета не должны быть доступны для выполнения задач других пакетов;

Если есть архитектурное решение/требование "Многопроцессная среда обработки" (чтобы не было желающих устроить одну и только одну очередь :), получаем потенциальный риск дедлока...

А устранить можно всегда, если "нам всё подконтрольно" (с) mikron, и если не упрёмся в нефункциональные требования при ограничениях вычислительных ресурсов...
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38306930
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойПоэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :).
Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки .
Не обязательно.. Надо просто модель продавать тому, кто схватит ее первым, а краску только обладетелю модели. Точнее организовать конвеер. Т.е. продавать товары в порядке артикула.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307049
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovАнатоЛойПоэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :).
Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки .
Не обязательно.. Надо просто модель продавать тому, кто схватит ее первым, а краску только обладетелю модели. Точнее организовать конвеер. Т.е. продавать товары в порядке артикула.
Артикулы А, Б, В. 1-му покупателю нужно А и В, второму Б и В. Продай в порядке артикулов, если В в 1-ом экземпляре... Всё равно за В передерутся.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307050
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойВсё равно за В передерутся.
Да, но дедлока не будет. Второй просто подождёт пока не подвезут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307107
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойВсё равно за В передерутся.
Да, но дедлока не будет. Второй просто подождёт пока не подвезут.

Согласен, недосмотрел.
Такая модель предполагается в общепите. Это заставляет каждого покупателя идти в общей очереди, ждать пока не принесут очередное нужное ему блюдо, а пришедшие после него, если им это блюдо не нужно, обходят тормознувшего.

Теперь допускаем, что покупатели могут бессовестно произвольно бродить, выбирая блюда. При дефиците в столовой образуется группа чуваков с пирожным без компота, и группа с компотом без пирожных. Причем барышни этих чуваков заняли уже все места, и на улице есть куча желающих похлебать борщика, но мест в столовой уже нет. Компота и пирожных до завтра не будет... Чуваки попались гордые и без полноценного полудника к барышням не вернутся....
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойТеперь допускаем, что...
....система построена без использования естественного интеллекта. Ну и кто при этом ССЗБ?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307203
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, решения известны. Т.е. теоретически можно постоить систему без дедлоков. Главное, не путать дедлоки с просто локами. На всякий случай, многие базы данных умеют обнаруживать дедлоки и их разблокировать. Да, при этом выдается ошибка. Но особо страшного то в этом ничего нет?
Т.е. надо не забыть настроить таймаут для выполнения стейтментов.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38307214
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovТ.е. надо не забыть настроить таймаут для выполнения стейтментов.

Это абсолютно избыточно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38308896
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойТеперь допускаем, что...
....система построена без использования естественного интеллекта. Ну и кто при этом ССЗБ?..

Дмитрий, поумерьте язвительности и грубости, пожалуйста, это не ваш личный блог...
Теперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). (Например, будем иметь 50 исков на дню за ограничение свободы и прочую дискриминацию, или, если уж шутливый тон не воспринимается, считаем что мы пишем интеграционный модулёк к какой-то большой и сложной системе, где не можем себе позволить выстраивать запросы в очередь, поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше?
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309026
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше?
не вижу тут причны для дедлока. Дедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х.
Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга.
Отсутвие таких проблем решается дизайном. Также для уменшения врероятности любых - уменьшение зацепления. Т.е. если у вас етсь транзакции делайте их короткими.
Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309152
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovДедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х.
Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга.

Я вас понял, вы меня - нет. Ваше описание дедлока мне понятно. Она - суть простейшей модели дедлока. Я привёл пример из жизни, работающий именно по этой модели, только, похоже, вы за множеством дедлоков в моём примере этот самый дедлок то и не заметили.

Мой пример работает по вашей модели:
Вместо объекта А - компот, вместо объекта Б - пирожное.
Два чувака (две части нашего приложения) покупают подружкам пирожное с компотом , но один сначала пошёл налево за пирожным, второй направо за компотом (лочат объекты А и Б).
Когда каждый из них пришёл за вторым блюдом (попытались получить доступ к Б и А), оказалось что второго блюда для них нет. Каждому вернуться к барышням без второго блюда гордость не позволяет, новые компоты с пирожными не приносят.
"Вот они и будут ждать друг-друга", ожидая, кто вернёт своё блюдо на полку первым :).

vromanovАнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше?
не вижу тут причны для дедлока.

Конкретно данная фраза - про неэффективность организации потока с подносами.
Причина для дедлока надеюсь внятно описана выше на ваших объектах А и Б.

vromanovОтсутвие таких проблем решается дизайном.
Также для уменшения врероятности любых - уменьшение зацепления.
Т.е. если у вас етсь транзакции делайте их короткими.
Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию.
По-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам).

П.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :)
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309221
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :)
Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309357
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между
ресурсами дана нам как требование, то есть свыше (см. стартовый топик).

Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем
вставать в очередь к следующему.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309819
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между
ресурсами дана нам как требование, то есть свыше (см. стартовый топик).

Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем
вставать в очередь к следующему.

К сожалению, я не понял, что это будет обозначать в моём примере...
Отдавать компот/пирожное барышням, прежде чем идти за пирожным/компотом?
Или возвращать компот/пирожное на полку?
Поясните, пожалуйста.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309835
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoАнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :)
Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно.
Согласен, все дружно без целей постебались. Разрешите сворачиваться ? .
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38309881
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере...

Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на
поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38310232
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере...

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

В моём примере я не могу "скопировать" пирожное или компот. Выше предложение по реализации нереализуемо.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38310239
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойВ моём примере я не могу "скопировать" пирожное или компот.

Совесть не даёт? Ню-ню...

В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К
счастью, не все люди так религиозны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38310286
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойВ моём примере я не могу "скопировать" пирожное или компот.

Совесть не даёт? Ню-ню...

В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К
счастью, не все люди так религиозны.


У меня впечатление, что мы все о разном.

Dimitry SibiryakovДеадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет.

Дмитрий, в каких известных вам СУБД такого артефакта нет?
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38310291
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойДмитрий, в каких известных вам СУБД такого артефакта нет?

ЕМНИП, их нет в Нимбусе. Но не надо передёргивать: между "нет общей теории" и "нет
дедлоков" - дистанция огромного размера. Первое означает, что там, где одна СУБД встаёт на
дедлок, другая этого не делает и наоборот.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314677
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой2. mikron, непонятно что такое "система полностью подконтрольна".
3. mikron, непонятно что такое "внешних источников помех нет".

4. mikron, любой путь ухода от дедлока потребует дополнительных затрат со стороны системы:
1) дополнительные ресурсы памяти;

Система на этапе разработке и любые изменения в реализации допустимы.
Под внешними источниками помех я подразумевал сторонние системы или действия ползователей.
Другими словами их просто нет. Доступ к базе данных предоставлен исключително теоретически разрабатываемой системе.
Память упрощённо можно сщитать резиновой.
АнатоЛой2) дополнительные вычисления;
3) дополнительное время на обработку;
или может "упереться" в нефункциональные требований (при имеющихся ограничениях в вычислительных ресурсах):
1) максимальное время обработки пакета не должно превышать ...;
2) количество повторных попыток обработки пакета не должно превышать ...;
3) время ожидания пакета до обработки не должно превышать ...;

Время обработки как другие перечисленные требования могут быть функционалными.
Но интересно иммено: может ли возникнуть ситуация, когда подобные требования являются функционалными и в то-же время обуславливают риск дедлока?

Очень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314688
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойПо-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам).


Если функционалным требованием является доставка комплексного обеда/полдника барыщням,
то решение с упорядочиванием доступа к компоту,пиржному и барышням решает проблему, но так-же подразумевает что ресурсы можно упорадочить по единому критерию.
Другой пример:
У нас есть экспедитор, который находится в произволной точке (Р) масквы, у наст есть Н складов,
разбросанных по всей территории масквы. Экспедитору поступает заказ, собрать набор артиклей
А1, А2, А3 со складов и доставить клиенту в точку (Х). Ясно что не на каждом складе есть есть все артикли в достаточном количестве,
таким образом экспедитору придётся резервировать акртикли с разных складов. Ясно так-же что порядок обхода складов зависит от позиции экспедитора и определяется функцией растояния до склада. Операция резервирования всего заказа должна быть атомарная. Если порядок артиклей артиклей строго детерменирован, то порядок складов - нет.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314691
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере...

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

Я себя так понимяю, это попытка расказать про "оптимистик локинг", но стратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Другими словами: копия ресурса ресурсом не является.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314699
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не
имеет и так-же не гарантирует зашиту от дедлока.
Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки
наличествуют. Дедлок при схеме, где каждый поток удерживает только один ресурс и всегда
освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен. ЧиТД:
дедлоки не являются неизбежностью.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314706
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДедлок при схеме, где каждый поток удерживает только один ресурс и всегда
освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен.

Вы правы, при такой ситуации дедлок не возможен.
Осталось только доказать что любую многопользователскую систему можно привести к держанию только одного лока.
(Это то-же самое что всем барыщням пить из одного стакана, ведь держать одновременно и стакан и пирожное нам никак нелзя:
иначе боолщой дедлок :)
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314714
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не
имеет и так-же не гарантирует зашиту от дедлока.
Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки

В интернете много обяснений, почему оптимистик локинг никак не пересекается с дедлок и так-же часто встречаются подобные заблуждения. http://www.mail-archive.com/ejb-interest@java.sun.com/msg11093.html]Вот на вскидку первый тыц.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314724
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronведь держать одновременно и стакан и пирожное нам никак нелзя

Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314746
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmikronведь держать одновременно и стакан и пирожное нам никак нелзя

Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически.

держать != хлебать
Попробуйте доказать что любую многопользователскую систему можно привести к держанию только одного лока и соблюсти все требования АЦИД.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314748
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему.
Совсем нет..
Вот предположим у нас етсь таблица товраров и таблица счетов покупателей. Когда просиходит покупка надо уменьшик количество доступных товаров и количестов денег на счету. Как мы это делаем,
1) Открываем транзакцию.
2) Уменьшаем количестов твоваров
3) Уменьшаем количество денег
4) Закрываем транзакцию с успехом или ролбачим в случае если например, товара или денег не хватило.

Как тут может произойти дедлок. Кто-то покупает селедку и молко, а кто-то молоко и селедку.
Первый уменьшил количество слеледки залочив строку с селедкой. Второй уменьшил остаток молока и залочил кол-во молока. После этого они не могут завершить операцию т.к. нужные им строчки держит кто-то другой. Чтобы такого не было - посто сортируем товары в корзине. В результатае дедлка не будет.
Система при этом будет вполне многопользовательской. Более того, в большимснтве случаев даже не придется освобождения залоченных строк, т.к. чаще все покупают разные товары.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314753
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovmikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему.
Совсем нет..

Я не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим?
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314755
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим?
Аналогия не верна.. Представте ресторан системы "шведский стол". Народ может брать все что угодно, но вдоль столов он движется в одном направлении. Можно обгонять, можно пропускать какие-то кушания итд.
Основное требование - движение в одном направлении. Перед входом висит меню, которое обновляется. Человек посмотрел на меню, выбрал что хочет, пошел брать. Если чего-то уже нет, тогда он либо растроенный уходит, либо идет на вторую итерацию вернув все то что уже набрал.
При этом люди по столам пробегают ОЧЕНЬ быстро.

на всякий случай, у меня возникает что вы любую базу назовете однопользовательской, ведь только один пользователь в любой момент может менять одну строку в базе.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность deadlock-ов
    #38314782
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vromanovmikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим?
Аналогия не верна..
Какая аналогия? С чем? Я вобще аналогий не приводил. О чём вы?
Мне кажется, вы ломитесь в открытую дверь. Всё что вы говорите - я почти во всём с вами согласен
(за исключением в вашем примере: ресурс после изменения нельза освобождать до завершения транзакции),
и никогда этому не возражал. Я даже привёл наглядный пример, где этот метод не работает. 14500341
Давайте его обсудим.
...
Рейтинг: 0 / 0
Теоретический вопрос про неизбежность 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
Теоретический вопрос про неизбежность deadlock-ов
    #38352588
Фотография vromanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronМожно ли теперь гарантировать отсутствие деадлоков и одновременно составление оптимального плана для курьера.
Оптимальность относительна. Т.е. план который был оптимальным минуту назад, сейчас уже может быть неоптимальным. Т.е. на то, что между первым обзвоном и вторым придет новый товар, можно игнорировать, т.к. вероятность такого события не очень велика. И экономия, которая будет при этом достигнута значительно меньше цены усложнения стстьемы или процессов. С других точек зрения, экспедиторы прсто доставляют товар на склады. Т.к. они только увеличивают количество, дедлоков не будет.

Можно еще предложить, чтобы курьер перестраививал свой план после прибытия на каждый склад исключив из задачи уже полученные товары. Конечно, в случае ручного обзвона это будет неоптимально, но если у него будет какой-то автоматический интерфейс - вполне имеет смысл.
например, ему нужны товары А, Б, С. Они есть на складах 1,2,3. Он выбирает план движения 1>2>3. Прибыв в 1. Он узнает, что товар C появился и на этом складе. Забирает А и С - едет на второй склад.
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Теоретический вопрос про неизбежность deadlock-ов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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