|
|
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Коллеги, интересует теоретический вопрос, бывают ли такие ситуации, когда на этапе разработки системы возникает "ситуация потенциално возможного" (риск) деадлока, которую нельзя устранить? Другими словами, система полностью подконтрольна, внешних источников помех нет, но задачи такие, что деадлок становится реалным риском, который принимается как сущность, данная нам свыше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 15:10 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Ты эта... точно не путаешь deadlock и update conflict?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 15:15 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы эта... точно не путаешь deadlock и update conflict?.. Речь иммено о деадлоках. Система конечно многоползовательская: куча сессий с непредсказуемым поведением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 16:30 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
При куче сессий с непредсказуемым поведением шанс дедлока будет как минимум на любом блокировочнике, и вряд ли с этим можно будет что-то сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 17:08 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronРечь иммено о деадлоках. Деадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 17:24 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronКоллеги, интересует теоретический вопрос, бывают ли такие ситуации, когда на этапе разработки системы возникает "ситуация потенциално возможного" (риск) деадлока, которую нельзя устранить? Она собственно никогда и не исчезает, эта ситуация, если есть больше одного пользователя, или есть многозадачность какая-то -- всегда есть вероятность возникновения deadlock-ов. mikronДругими словами, система полностью подконтрольна, внешних источников помех нет, но задачи такие, что деадлок становится реалным риском, который принимается как сущность, данная нам свыше. Риск дедлока всегда есть, может быть достаточно маленький, но есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 19:09 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovmikronРечь иммено о деадлоках. Деадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет. Здрасте, очень даже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 19:10 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
MasterZivОна собственно никогда и не исчезает, эта ситуация... Риск дедлока всегда есть, может быть достаточно маленький, но есть. Другими словами, на этапе проектирования был выявлена потенциальная ситуация дед дока,и нету возможности её исправить изменив порядок выполнения запросов и деталей реализации?т.е именно функциональные требовани определяют риск деадлока. Приведете пожалуйста пример. Я таких как-то не найду. Всегда находится решение. Не забывайте, система в разработке и можно любое поведение изменить. Не изменяемы толко функциональные требования к системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 19:46 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronт.е именно функциональные требовани определяют риск деадлока. Приведете пожалуйста пример. Я таких как-то не найду.Не думаю, что найдете. Всегда можно переписать так, что проблема уйдет. Даже в случае багов, например когда разные потоки распараллеленного запроса лочат друг друга, обычно есть выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 06:09 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
MasterZivЗдрасте, очень даже есть. пожалуйста, покажите направление поиска. А то пока как в анекдоте, чувствую, что теоретически - литр, а математически обосновать не могу. В смылсе, не могу найти примера, когда нельзя устранить деадлок. но может он всё-таки существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2013, 17:15 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronВ смылсе, не могу найти примера, когда нельзя устранить деадлок. но может он всё-таки существует. Лично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 12:57 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
softwarerЛично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить Разрешаю разгласить тайну: показывайте эту строчку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:50 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronsoftwarerЛично я вижу простое, в одну строчку, доказательство того, что любой дедлок можно устранить Разрешаю разгласить тайну: показывайте эту строчку. Подсказываю: для того, чтобы дедлок имел шанс возникнуть, должны быть выполнены некоторые условия. Существует техническая возможность сравнительно просто перестроить работу любой произвольной ИС таким способом, чтобы одно из этих условий заведомо не выполнялось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 16:18 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Вы все исходите в ваших рассуждениях из того, что порядок обращения к ресурсам системы детерминирован. В таком случае, если порядок можно менять, то всегда можно найти Но это не всегда так, есть системы, где порядок доступа к ресурсам не определен вообще, случаен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 01:32 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
MasterZivесть системы, где порядок доступа к ресурсам не определен вообщеДидлок - следствие конкуренции процессов за ресурсы. Нет конкуренции, нет дидлоков. P.S. "В очередь, сукины дети !" © ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 07:45 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
MasterZivесть системы, где порядок доступа к ресурсам не определен вообще, случаен. Но и в них дедлока можно избежать если отпускать занятый ресурс прежде чем становиться в очередь за новым. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 12:02 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Можно, если это можно делать, и можно это контролировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 12:26 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
ChA MasterZiv есть системы, где порядок доступа к ресурсам не определен вообще Дидлок - следствие конкуренции процессов за ресурсы. Нет конкуренции, нет дидлоков. P.S. "В очередь, сукины дети !" © Правильно. Поэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :). Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 20:05 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
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, и если не упрёмся в нефункциональные требования при ограничениях вычислительных ресурсов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2013, 21:03 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойПоэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :). Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки . Не обязательно.. Надо просто модель продавать тому, кто схватит ее первым, а краску только обладетелю модели. Точнее организовать конвеер. Т.е. продавать товары в порядке артикула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 00:42 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovАнатоЛойПоэтому, чтобы покупатели не подрались у полки в магазине за последнюю модель самолёта с серийным номером 321 и одну из баночек краски защитного цвета (без которой обычно эту модель никто не покупает), мы будем сукиных детей в магазин запускать по очереди :). Хотя нам, продавцам, совершенно всё равно, если два покупателя подерутся за эту модельку прямо у полки . Не обязательно.. Надо просто модель продавать тому, кто схватит ее первым, а краску только обладетелю модели. Точнее организовать конвеер. Т.е. продавать товары в порядке артикула. Артикулы А, Б, В. 1-му покупателю нужно А и В, второму Б и В. Продай в порядке артикулов, если В в 1-ом экземпляре... Всё равно за В передерутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 14:31 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойВсё равно за В передерутся. Да, но дедлока не будет. Второй просто подождёт пока не подвезут. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 14:40 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойВсё равно за В передерутся. Да, но дедлока не будет. Второй просто подождёт пока не подвезут. Согласен, недосмотрел. Такая модель предполагается в общепите. Это заставляет каждого покупателя идти в общей очереди, ждать пока не принесут очередное нужное ему блюдо, а пришедшие после него, если им это блюдо не нужно, обходят тормознувшего. Теперь допускаем, что покупатели могут бессовестно произвольно бродить, выбирая блюда. При дефиците в столовой образуется группа чуваков с пирожным без компота, и группа с компотом без пирожных. Причем барышни этих чуваков заняли уже все места, и на улице есть куча желающих похлебать борщика, но мест в столовой уже нет. Компота и пирожных до завтра не будет... Чуваки попались гордые и без полноценного полудника к барышням не вернутся.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 17:23 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойТеперь допускаем, что... ....система построена без использования естественного интеллекта. Ну и кто при этом ССЗБ?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 17:29 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Короче, решения известны. Т.е. теоретически можно постоить систему без дедлоков. Главное, не путать дедлоки с просто локами. На всякий случай, многие базы данных умеют обнаруживать дедлоки и их разблокировать. Да, при этом выдается ошибка. Но особо страшного то в этом ничего нет? Т.е. надо не забыть настроить таймаут для выполнения стейтментов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 23:00 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovТ.е. надо не забыть настроить таймаут для выполнения стейтментов. Это абсолютно избыточно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2013, 23:23 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойТеперь допускаем, что... ....система построена без использования естественного интеллекта. Ну и кто при этом ССЗБ?.. Дмитрий, поумерьте язвительности и грубости, пожалуйста, это не ваш личный блог... Теперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). (Например, будем иметь 50 исков на дню за ограничение свободы и прочую дискриминацию, или, если уж шутливый тон не воспринимается, считаем что мы пишем интеграционный модулёк к какой-то большой и сложной системе, где не можем себе позволить выстраивать запросы в очередь, поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 02:49 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? не вижу тут причны для дедлока. Дедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х. Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга. Отсутвие таких проблем решается дизайном. Также для уменшения врероятности любых - уменьшение зацепления. Т.е. если у вас етсь транзакции делайте их короткими. Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 09:55 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovДедлки возникают по следующей причне. У вакс есть два объекта A и Б. Предположим, это количество средств на счету покупателя и количество товара Х. Дедлок возникнет если одна часть вашего приложения, сначала залочит объект А, вторая объект Б. А потом первая попытается получить доступ к Б а вторая к А. Вот они и будут ждать друг-друга. Я вас понял, вы меня - нет. Ваше описание дедлока мне понятно. Она - суть простейшей модели дедлока. Я привёл пример из жизни, работающий именно по этой модели, только, похоже, вы за множеством дедлоков в моём примере этот самый дедлок то и не заметили. Мой пример работает по вашей модели: Вместо объекта А - компот, вместо объекта Б - пирожное. Два чувака (две части нашего приложения) покупают подружкам пирожное с компотом , но один сначала пошёл налево за пирожным, второй направо за компотом (лочат объекты А и Б). Когда каждый из них пришёл за вторым блюдом (попытались получить доступ к Б и А), оказалось что второго блюда для них нет. Каждому вернуться к барышням без второго блюда гордость не позволяет, новые компоты с пирожными не приносят. "Вот они и будут ждать друг-друга", ожидая, кто вернёт своё блюдо на полку первым :). vromanovАнатоЛой поскольку мы не столовая, а кафе, в которой 99% заказов - из одного блюда). Что дальше? не вижу тут причны для дедлока. Конкретно данная фраза - про неэффективность организации потока с подносами. Причина для дедлока надеюсь внятно описана выше на ваших объектах А и Б. vromanovОтсутвие таких проблем решается дизайном. Также для уменшения врероятности любых - уменьшение зацепления. Т.е. если у вас етсь транзакции делайте их короткими. Например, если кто-то выбрал товар, то не надо лочить эту строчку, а просто зарезервируйте его на некоторое количество времени и осводите транзакцию. По-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам). П.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:21 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 11:52 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем вставать в очередь к следующему. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 12:43 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойТеперь таки представьте, что возможность чуваков хаотично метаться между ресурсами дана нам как требование, то есть свыше (см. стартовый топик). Тогда достаточно устранить второе условие дедлока и отпускать занятый ресурс прежде чем вставать в очередь к следующему. К сожалению, я не понял, что это будет обозначать в моём примере... Отдавать компот/пирожное барышням, прежде чем идти за пирожным/компотом? Или возвращать компот/пирожное на полку? Поясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:22 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vadiminfoАнатоЛойП.С.: В топике не хватает топик-стартера для оценки достигнутых результатов :) Ну, возможно, следует достигнуть еще больших результатов, и чтобы там было именно теоретическое что-то (вопрос то теоретический по мнению ТС). Например, теорема с формальным доказательством. Возможно, нескольких примеров ему все еще недостаочно. Согласен, все дружно без целей постебались. Разрешите сворачиваться ? . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:27 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 16:40 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. В моём примере я не могу "скопировать" пирожное или компот. Выше предложение по реализации нереализуемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 19:41 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойВ моём примере я не могу "скопировать" пирожное или компот. Совесть не даёт? Ню-ню... В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К счастью, не все люди так религиозны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 19:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойВ моём примере я не могу "скопировать" пирожное или компот. Совесть не даёт? Ню-ню... В таком случае твоё доказательство неизбежности дедлоков звучит как "я не могу иначе". К счастью, не все люди так религиозны. У меня впечатление, что мы все о разном. Dimitry SibiryakovДеадлоки это артефакт реализации конкретной СУБД. Никакой общей теории для них нет. Дмитрий, в каких известных вам СУБД такого артефакта нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 20:54 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойДмитрий, в каких известных вам СУБД такого артефакта нет? ЕМНИП, их нет в Нимбусе. Но не надо передёргивать: между "нет общей теории" и "нет дедлоков" - дистанция огромного размера. Первое означает, что там, где одна СУБД встаёт на дедлок, другая этого не делает и наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2013, 21:04 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛой2. mikron, непонятно что такое "система полностью подконтрольна". 3. mikron, непонятно что такое "внешних источников помех нет". 4. mikron, любой путь ухода от дедлока потребует дополнительных затрат со стороны системы: 1) дополнительные ресурсы памяти; Система на этапе разработке и любые изменения в реализации допустимы. Под внешними источниками помех я подразумевал сторонние системы или действия ползователей. Другими словами их просто нет. Доступ к базе данных предоставлен исключително теоретически разрабатываемой системе. Память упрощённо можно сщитать резиновой. АнатоЛой2) дополнительные вычисления; 3) дополнительное время на обработку; или может "упереться" в нефункциональные требований (при имеющихся ограничениях в вычислительных ресурсах): 1) максимальное время обработки пакета не должно превышать ...; 2) количество повторных попыток обработки пакета не должно превышать ...; 3) время ожидания пакета до обработки не должно превышать ...; Время обработки как другие перечисленные требования могут быть функционалными. Но интересно иммено: может ли возникнуть ситуация, когда подобные требования являются функционалными и в то-же время обуславливают риск дедлока? Очень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 12:42 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойПо-моему, никто из участников не сомневается, что проблема дедлока решается - если нет требований/ограничений для реализации того или иного алгоритма. Мы с первом поста говорим о том, есть ли такие функциональные требований (читай "требования из среды") , что дедлоки таки будут случаться (читай "нельзя организовать обработку ресурсов таким образом, что мы полностью избежим ситуаций с возникновением дедлока, и не придётся придумывать тайм-ауты или "внешних наблюдателей" или доп. обработку, прежде чем заблокировать ресурс")). Я привёл пример, когда упорядочивание ресурсов (последовательность блюд на вдоль реек с подносами) и упорядочивание потребителей ресурсов (посетителей кафе в очереди с подносами) не удовлетворяет функциональным требованиям (посетители вправе в произвольном порядке подходить к блюдам). Если функционалным требованием является доставка комплексного обеда/полдника барыщням, то решение с упорядочиванием доступа к компоту,пиржному и барышням решает проблему, но так-же подразумевает что ресурсы можно упорадочить по единому критерию. Другой пример: У нас есть экспедитор, который находится в произволной точке (Р) масквы, у наст есть Н складов, разбросанных по всей территории масквы. Экспедитору поступает заказ, собрать набор артиклей А1, А2, А3 со складов и доставить клиенту в точку (Х). Ясно что не на каждом складе есть есть все артикли в достаточном количестве, таким образом экспедитору придётся резервировать акртикли с разных складов. Ясно так-же что порядок обхода складов зависит от позиции экспедитора и определяется функцией растояния до склада. Операция резервирования всего заказа должна быть атомарная. Если порядок артиклей артиклей строго детерменирован, то порядок складов - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:06 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойК сожалению, я не понял, что это будет обозначать в моём примере... Взял компот, перелил себе на поднос, вернул на полку. Взял пирожное, скопировал себе на поднос, вернул на полку. Теперь у тебя есть обои, можешь идти к барышням. Я себя так понимяю, это попытка расказать про "оптимистик локинг", но стратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Другими словами: копия ресурса ресурсом не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:11 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки наличествуют. Дедлок при схеме, где каждый поток удерживает только один ресурс и всегда освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен. ЧиТД: дедлоки не являются неизбежностью. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 13:40 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДедлок при схеме, где каждый поток удерживает только один ресурс и всегда освобождает его прежде, чем становится в очередь за следующим, возможен? Невозможен. Вы правы, при такой ситуации дедлок не возможен. Осталось только доказать что любую многопользователскую систему можно привести к держанию только одного лока. (Это то-же самое что всем барыщням пить из одного стакана, ведь держать одновременно и стакан и пирожное нам никак нелзя: иначе боолщой дедлок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:05 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovmikronстратегия хоть и имеет в названии слово "локинг" ничего бщего с темой не имеет и так-же не гарантирует зашиту от дедлока. Да неужели? Ресурс на время "взятия" должен быть заблокирован? Должен. Значит локи таки В интернете много обяснений, почему оптимистик локинг никак не пересекается с дедлок и так-же часто встречаются подобные заблуждения. http://www.mail-archive.com/ejb-interest@java.sun.com/msg11093.html]Вот на вскидку первый тыц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:21 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronведь держать одновременно и стакан и пирожное нам никак нелзя Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 14:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovmikronведь держать одновременно и стакан и пирожное нам никак нелзя Кусать пирожное и одновременно хлебать из стакана невозможно чисто физиологически. держать != хлебать Попробуйте доказать что любую многопользователскую систему можно привести к держанию только одного лока и соблюсти все требования АЦИД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:02 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. Совсем нет.. Вот предположим у нас етсь таблица товраров и таблица счетов покупателей. Когда просиходит покупка надо уменьшик количество доступных товаров и количестов денег на счету. Как мы это делаем, 1) Открываем транзакцию. 2) Уменьшаем количестов твоваров 3) Уменьшаем количество денег 4) Закрываем транзакцию с успехом или ролбачим в случае если например, товара или денег не хватило. Как тут может произойти дедлок. Кто-то покупает селедку и молко, а кто-то молоко и селедку. Первый уменьшил количество слеледки залочив строку с селедкой. Второй уменьшил остаток молока и залочил кол-во молока. После этого они не могут завершить операцию т.к. нужные им строчки держит кто-то другой. Чтобы такого не было - посто сортируем товары в корзине. В результатае дедлка не будет. Система при этом будет вполне многопользовательской. Более того, в большимснтве случаев даже не придется освобождения залоченных строк, т.к. чаще все покупают разные товары. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:19 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovmikronОчень хороший пример с очередью. конечно решает все проблемы но превращает систему в однопользовательскую, т.к. подразумевает что обслуживание одного клиента не оставляет блокировок и является атомарным действием. Я рассматриваю многопользовательскую систему. Совсем нет.. Я не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:31 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? Аналогия не верна.. Представте ресторан системы "шведский стол". Народ может брать все что угодно, но вдоль столов он движется в одном направлении. Можно обгонять, можно пропускать какие-то кушания итд. Основное требование - движение в одном направлении. Перед входом висит меню, которое обновляется. Человек посмотрел на меню, выбрал что хочет, пошел брать. Если чего-то уже нет, тогда он либо растроенный уходит, либо идет на вторую итерацию вернув все то что уже набрал. При этом люди по столам пробегают ОЧЕНЬ быстро. на всякий случай, у меня возникает что вы любую базу назовете однопользовательской, ведь только один пользователь в любой момент может менять одну строку в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 16:39 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovmikronЯ не понял, с чем вы не согласны? С утверждением: пускать по одному человеку в супермаркет == однопользователский режим? Аналогия не верна.. Какая аналогия? С чем? Я вобще аналогий не приводил. О чём вы? Мне кажется, вы ломитесь в открытую дверь. Всё что вы говорите - я почти во всём с вами согласен (за исключением в вашем примере: ресурс после изменения нельза освобождать до завершения транзакции), и никогда этому не возражал. Я даже привёл наглядный пример, где этот метод не работает. 14500341 Давайте его обсудим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 17:55 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronдержать != хлебать Ага, т.е. пользвоатель занимает ресурс, который не в состоянии на данный момент использовать. Этакая собака на сене. mikronПопробуйте доказать что любую многопользователскую систему можно привести к держанию только одного лока и соблюсти все требования АЦИД. А доказательство существования философского камня не хотите? Перечитайте внимательно мой второй пост в этой теме. vromanovПервый уменьшил количество слеледки залочив строку с селедкой. Второй уменьшил остаток молока и залочил кол-во молока. А зачем они их залочили? Достаточно и того факта, что они их изменили. Попытка повторного изменения будет распознана как update conflict и никакого взаимного лока не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 19:37 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
PS: Как я уже сказал? NumbusDB существует. Она многопользовательская и в ней нет дедлоков. Но как они этого добились, я рассказать не смогу: при попытке вкурить её архитектуру у меня срывает крышу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2013, 19:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovPS: Как я уже сказал? NumbusDB существует. Она многопользовательская и в ней нет дедлоков. Но как они этого добились, я рассказать не смогу: при попытке вкурить её архитектуру у меня срывает крышу. Дай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 04:01 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
И давайте контрольно сверимся, что мы понимаем под дедлоком: я понимаю это как ситуацию, когда два и более процесса начинают ожидать друг-друга из-за занятых ресурсов, часть которых сами же и не отпускают, а вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 04:11 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronvromanovпропущено... Аналогия не верна.. Какая аналогия? С чем? Я вобще аналогий не приводил. О чём вы? Мне кажется, вы ломитесь в открытую дверь. Всё что вы говорите - я почти во всём с вами согласен (за исключением в вашем примере: ресурс после изменения нельза освобождать до завершения транзакции), и никогда этому не возражал. Я даже привёл наглядный пример, где этот метод не работает. 14500341 Давайте его обсудим. mikron, мы приводим примеры из жизни или распределенной системы, а коллеги говорят о каком-то ядре СУБД, которому копию ресурса сделать — раз плюнуть. Может это потому, что раздел "проектирование бд"?! Как им объяснить, что даже попытка курьеров сначала обзванивать склады и резервировать товар может привести к дедлоку резервирований: даже в случае, когда курьер отказывается от формирования заказа, если нет части заказа, мы сталкиваемся с ситуацией отказа двум клиентам, хотя одному из них могли собрать заказ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 04:50 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойДай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру... http://tech.groups.yahoo.com/group/Firebird-Architect/messages АнатоЛойдавайте контрольно сверимся, что мы понимаем под дедлоком: я понимаю это как ситуацию, когда два и более процесса начинают ожидать друг-друга из-за занятых ресурсов, часть которых сами же и не отпускают , а вы? Аналогично. Ключевое условие выделено. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 13:51 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойДай, плиз, ссылку, на основании которой пытаешься вкурить архитектуру... http://tech.groups.yahoo.com/group/Firebird-Architect/messages Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 18:33 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Про курьера Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 18:45 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovПро курьера Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала. Задумайся, что делают на самих складах при звонках курьера. На складах резервируют товар при звонке курьера? Если да, то при первом или втором? На одном складе находится только один диспетчер? Если нет, как они резервируют один и тот же товар одновременно для разных курьеров? Как быть, если пока мы оформляли резерв на сотую позицию курьеру К1, второй диспетчер зарезервировал всю 101ую позицию курьеру 2... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:05 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойDimitry Sibiryakovпропущено... http://tech.groups.yahoo.com/group/Firebird-Architect/messages Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил? Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:09 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойАнатоЛойпропущено... Наверное, неудивительно, если пытаться курить архитектуру NuoDB по сообщениям на форуме Firebird, даже если про нее грузит сам Джим Старки. Может что-то более компактное и систематизированное находил? Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :) А вот и альтернативная картинка : ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:14 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойАнатоЛойпропущено... Кстати, нашел вот это . При наброске картинки получается вообще вменяемо. Осталось вкурить, как это избавляет от дедлоков. :) А вот и альтернативная картинка : И еще один документ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:27 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойЕсли нет, как они резервируют один и тот же товар одновременно для разных курьеров? Никак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину склада, второй - правую. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:34 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойЗадумайся, что делают на самих складах при звонках курьера. На складах резервируют товар при звонке курьера? Если да, то при первом или втором? На одном складе находится только один диспетчер? Если нет, как они резервируют один и тот же товар одновременно для разных курьеров? Как быть, если пока мы оформляли резерв на сотую позицию курьеру К1, второй диспетчер зарезервировал всю 101ую позицию курьеру 2... Резервируют при втором звонке. Диспетчер берет товар и откладывает его в лоток для этого курьера. Один товар в один момент времени может откладывать только один диспетчер. Это называется блокировка. Не надо путать с лком. Если не хватает 101 позиции. Значит делается ролбак. Все товары разрезервируются, и курьер начинает резервировать снова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:38 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНикак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину склада, второй - правую. Ну или у них карточки для товаров. И в один момент времени карточка одного товара доступна только одному диспетчеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:39 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovЭто называется блокировка. Не надо путать с лком. А в чём разница? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:43 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛой, When the Viewer’s Transaction Manager Atom sees the commit of transaction 355555, it tells transaction 377777, “Sorry, your update failed.” ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:44 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнатоЛойЕсли нет, как они резервируют один и тот же товар одновременно для разных курьеров? Никак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину склада, второй - правую. То бишь курьер, звоня на склад, звонит по очереди то одному, то другому диспетчеру. Не многовато ли нужно знать курьеру? Ну или диспетчеры переключают друг на друга. Тогда куча ожиданий переключений курьером, если список для диспетчеров не поделен в соотвествии с вышеупомянутым "мировым порядком номеклатуры". Или один диспетчер постоянно курит вместо работы - в его части списка не поступают заказы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:48 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА в чём разница? Как же я хреново печатаю :( дедлок там имелся в виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:49 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovDimitry SibiryakovНикак, у них непересекающиеся зоны ответственности. Один диспетчер держит левую половину склада, второй - правую. Ну или у них карточки для товаров. И в один момент времени карточка одного товара доступна только одному диспетчеру. Да-да, проходили. Даже не развиваю тему, а то вернёмся к копии карточек :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:50 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
АнатоЛойТо бишь курьер, звоня на склад, звонит по очереди то одному, то другому диспетчеру. Не многовато ли нужно знать курьеру? Нет, ему достаточно знать телефон диспетчера, который ведёт нужный ему товар. И таки да, курьеры сериализуются на диспетчере. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 20:00 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
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." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 21:32 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
По русски: "Дедлоки случаются" и в NuoDB, приложения получают выбор, как же с ними поступать, а "благонравные приложения" откатывают свои транзакции после получения сообщений о случившемся дедлоке с их участием. Итог: причины возникновения дедлоков были понятны всем участникам и так. Примеры функциональных требований можно плодить пачками. Основной шаблон получения таких требований: п.1) вынести за рамками подконтрольного системе все условия возникновения дедлока; Для ядра СУБД: сессии, которые плодят транзакции и блокируют записи, как это удобно им. Для распределённой СУБД: те же беспорядочные транзакции. Для любой разрабатываемой системы: ограничить её функциональные рамки, чтобы условия возникновения находились за рамками системы. п.2) вынести за рамки архитектурных или технологических возможностей реализацию известных алгоритмов поиска и устранения дедлока; п.3) добавить ограничения (производительность, эффективность использования ресурсов, просто здравый смысл :)) , которые будут работать на слабые стороны того или иного алгоритма. Пример для нашего склада и курьеров: мы пишем программу для курьеров, но никак не управляем складами (ни процессами/организацией, ни IT-системой управления складом). Таким образом условия возникновения дедлока находятся за рамками нашей системы. ТС, аууууу :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 21:48 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
vromanovПро курьера Укрьер должен сначала обзвонить все склады - выяснить наличие товара. Потом, составить свой план. И еще раз обзвонить склады в каком либо фиксированном порядке. Например, по номерам. Другие курьеры поступают также. Если кому-то товара уже хватает, он начинает итерацию сначала. Элегантное решение, демонстрирует каким образом путём доп. затрат можно избежать деадлока. Оно так же гарантирует что курьер всегда получит оптимальный план. Усложним/дополним модель экспедиторами, которые проставляют артикли на склады. Можно ли теперь гарантировать отсутствие деадлоков и одновременно составление оптимального плана для курьера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 10:03 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
Пока получается, в принципе всегда возможна ситуация, где для разрабатываемой системы риск деадлока определяется только функциональными требованиями к системе. Правда разумность функциональных требований не всегда однозначна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 11:01 |
|
||
|
Теоретический вопрос про неизбежность deadlock-ов
|
|||
|---|---|---|---|
|
#18+
mikronМожно ли теперь гарантировать отсутствие деадлоков и одновременно составление оптимального плана для курьера. Оптимальность относительна. Т.е. план который был оптимальным минуту назад, сейчас уже может быть неоптимальным. Т.е. на то, что между первым обзвоном и вторым придет новый товар, можно игнорировать, т.к. вероятность такого события не очень велика. И экономия, которая будет при этом достигнута значительно меньше цены усложнения стстьемы или процессов. С других точек зрения, экспедиторы прсто доставляют товар на склады. Т.к. они только увеличивают количество, дедлоков не будет. Можно еще предложить, чтобы курьер перестраививал свой план после прибытия на каждый склад исключив из задачи уже полученные товары. Конечно, в случае ручного обзвона это будет неоптимально, но если у него будет какой-то автоматический интерфейс - вполне имеет смысл. например, ему нужны товары А, Б, С. Они есть на складах 1,2,3. Он выбирает план движения 1>2>3. Прибыв в 1. Он узнает, что товар C появился и на этом складе. Забирает А и С - едет на второй склад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 11:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541155]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 550ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...