AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2011, 14:36   #1  
Ievgenii is offline
Ievgenii
Участник
Аватар для Ievgenii
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
 
111 / 113 (4) +++++
Регистрация: 21.09.2008
Адрес: Copenhagen, Denmark
Спасибо за детальный ответ! Проблема ясна, более того SQL lock manager довольно быстро ескалайтит описанную ситуацию до полного блокинга всей таблицы.

Наши ПМы рассуждают так:
1. Блокировка всей таблицы может возникнуть только если за последний период существует большое количество не финансовых переносов. С их опыта и опыты кастомеров что используют фичу такое не случаеться у них на практике (бизнесы такие наверное). Я так понял что речь идет о интервале в 1 месяц.
2. IC рекомендуеться запускать когда система минимально используеться пользователями и тут нам важно скорость выполнения. Например, в MRP некоторые транзакции удаляються по номенклатурам. При этом подходе само выполнени естественно медленее, но блокировок значительно меньше может быть. В нашем случае - это не target сценарий, ибо IC запускаеться на огромные обьемы данних не каждый день.
3. Из пункта 1 следует что в самом плохом случаи идет речь о обновлении несколько тысяч записей. Сколько это займет на современном сервере? На моей машине (далеко до самого современного сервера) 1 мил. записей занимает вроде 2-5 минут, точно не помню.

Выводы (не окончательные)
1. Проблема если и случаеться, то должа случаться крайне редко. Блокировка может мериться в секундах.

Евгений,
Расскажы пожалуйста немного о ваших данных на которых тестировали.

Чтобы все понимали - у нас в МС ваши отзывы все утро обсуждаем :0)
__________________
Thx,
Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/

Последний раз редактировалось Ievgenii; 07.06.2011 в 14:38.
Старый 07.06.2011, 15:25   #2  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Ievgenii Посмотреть сообщение
Выводы (не окончательные)
1. Проблема если и случаеться, то должа случаться крайне редко. Блокировка может мериться в секундах.
Понимаете в чем вопрос-то - если в момент эскалации есть блокировки на другие номенклатуры/аналитики, то этот самый lock manager остановится и будет ждать! Соответственно то что он успел залочить так и будет лоченое. Далее все нарастает лавиной - другие юзеры начинают становиться в ожидание, тоже залочив какие-то записи и т.д. - до полной победы блокировок над всеми пользователями!
И поверьте - при кол-ве пользователе от 100 это дело 10 секунд!
Поэтому, если есть возможность - нужно избегать подобных алгоритмов, ну или сразу лочить таблицу, делать что надо и отпускать - так будет действительно быстро и надежно.
__________________
Axapta 3.0 sp - хз какой, kr2
Старый 07.06.2011, 18:56   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,972 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ievgenii Посмотреть сообщение
...
Наши ПМы рассуждают так:
...
Хм. Но ведь для 2012-й проблемы блокировок нет, сделали все так как и fed предлагал.
Уж так и бы и сказали что не хотят ничего менять в 2009-й

P.S.
Вопрос наверно для другой ветки, но неужели MS до сих пор не может решить проблему эскалации блокировок ? Неужели нельзя сделать настоящий версионник, а-ля Оракл, Postgre, FireBird и не мучаться ? Мы сейчас живем на оракл - вообще не знаем таких слов "эскалация". Очень радует

Последний раз редактировалось Logger; 07.06.2011 в 19:10.
Старый 07.06.2011, 19:09   #4  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Logger Посмотреть сообщение
Вопрос наверно для другой ветки, но неужели MS до сих пор не может решить проблему эскалации блокировок ? Неужели нельзя сделать настоящий версионник, а-ля Оракл, Postgre, FireBird и не мучаться ?
Версионник уже давно сделали. Но блокировки все равно нужны для:
1. Предотвращения конфликтов записи
2. Ситуаций, грубо говоря, продажи билетов на поезд. Когда надо обеспечить чтобы между чтением ресурса и его обновлением он был заблокирован и недоступен для обновления другими сессиями.

Кроме того, сами по себе эскалация блокировок - не такое уж зло. Если у тебя таблица построчных блокировок разростается в памяти, то каждая новая операция обновления занимает все больше времени, поскольку надо все больше и больше времени искать в таблице блокировок ID текущего объекта. И во многих случаях, эскалация на самом деле повышает производительность работы с БД. Идеальным вариантом, на мой взгляд, была бы возможность отключать эскалацию каким-то хинтом в конкретном запросе, а главное - интерфейс к этому хинту из X++.
Старый 07.06.2011, 19:18   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,972 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от fed Посмотреть сообщение
Версионник уже давно сделали. Но блокировки все равно нужны для:
1. Предотвращения конфликтов записи
2. Ситуаций, грубо говоря, продажи билетов на поезд. Когда надо обеспечить чтобы между чтением ресурса и его обновлением он был заблокирован и недоступен для обновления другими сессиями.
Денис, я немного о другом писал. Про эскалацию блокировок. Неточно выразился. Версионник конечно есть, но с эскалацией блокировок это несильно радует. Выше как раз обсуждали ситуацию когда могут быть заблокированы проводки со статусами, которые закрытие не трогает или вообще из других компаний.

Цитата:
Сообщение от fed Посмотреть сообщение
Кроме того, сами по себе эскалация блокировок - не такое уж зло. Если у тебя таблица построчных блокировок разростается в памяти, то каждая новая операция обновления занимает все больше времени, поскольку надо все больше и больше времени искать в таблице блокировок ID текущего объекта. И во многих случаях, эскалация на самом деле повышает производительность работы с БД. Идеальным вариантом, на мой взгляд, была бы возможность отключать эскалацию каким-то хинтом в конкретном запросе, а главное - интерфейс к этому хинту из X++.
Ключевое слово - "памяти". Денис, ты неявно предполагаешь какую то конкретную реализацию механизма блокировок (как я понимаю майкрософтовскую) и говоришь о её недостатках. Если не ошибаюсь оракл хранит инфу о блокировках на диске в самих записях, так что при большом числе блокировок памяти дополнительной не тратится. Работает достаточно шустро.

Наверно есть и другие способы реализации механизма блокировок, экономно расходующие память и прочие ресурсы БД. Обсуждение куда-то в сторону уходит.

Я имел в виду, что раз другим компаниям удалось создать нормальные механизмы блокировок свободные от эскалации, то майкрософт могла бы уж поднатужиться и разродиться чем-нить подобным.

Последний раз редактировалось Logger; 07.06.2011 в 19:21.
Старый 08.06.2011, 10:01   #6  
Evgeniy2020 is offline
Evgeniy2020
Участник
 
309 / 68 (3) ++++
Регистрация: 10.04.2007
Адрес: Москва, САО, СЗАО
а OCC выключен для этих таблиц? или в данной задаче OCC не поможет?
или там принудительно включен PCC?
Старый 08.06.2011, 12:17   #7  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Logger Посмотреть сообщение
Ключевое слово - "памяти". Денис, ты неявно предполагаешь какую то конкретную реализацию механизма блокировок (как я понимаю майкрософтовскую) и говоришь о её недостатках. Если не ошибаюсь оракл хранит инфу о блокировках на диске в самих записях, так что при большом числе блокировок памяти дополнительной не тратится. Работает достаточно шустро.
Я когда-то на информиксе начинал. Там таблица блокировок в памяти хранилась, при этом размер таблицы блокировок был фиксированным и задавался в конфигурационном файле. Если ты пытался обновить больше строк чем было свободного места в таблице блокировок, то твой update, без объявления войны, завершался с кодом ошибки. Там мне как раз эскалации не хватало, поскольку при загрузке справочников приходилось их резать на порции по 10000 записей. (Возможно в свежих версиях информикса это дело поправили, но я давно им не занимаюсь).
В оракле информация о блокировках храниться в заголовке блока. Подробности про это рассказаны в http://my-oracle.it-blogs.com.ua/post-239.aspx. Тоже, на самом деле, не идеальный вариант. Во первых - часть полезного пространства блока отъедается под данные о блокировках, во вторых - если ты с числом слотов под данные о блокировках не угадал при создании таблицы, то транзакции точно также блокируются в ожидании места под запись о блокировке, даже если никаких объективных конфликтов блокирования нету... Ну то есть - оба подхода имеют свои плюсы и минусы, в каких-то случаях оракловский подход лучше работает, в каких-то микрософтовский. Хочешь работу без эскалации, будь готов получить какие-то другие грабли взамен...
За это сообщение автора поблагодарили: Logger (5).
Старый 08.06.2011, 12:25   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,972 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от fed Посмотреть сообщение
Во первых - часть полезного пространства блока отъедается под данные о блокировках, во вторых - если ты с числом слотов под данные о блокировках не угадал при создании таблицы, то транзакции точно также блокируются в ожидании места под запись о блокировке, даже если никаких объективных конфликтов блокирования нету...
Спасибо за инфу. Не знал про это ограничение.
Конечно, проблемы возможны. Но все же настройка более гибкая. Можно этим параметром играть. Плюс оперативка более ценная память чем диск.

По опыту использования - мы на такие блокировки вроде бы не натыкались. Видимо наш админ угадал с числом слотов под блокировки. Либо значение по умолчанию там удачное стоит.
Старый 09.09.2013, 18:27   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Пожалуй, оставлю здесь ссылку на свою связанную тему:

Нефинансовые перемещения не раскрываются при отмене закрытия
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 08.06.2011, 10:30   #10  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Ievgenii Посмотреть сообщение
Евгений,
Расскажы пожалуйста немного о ваших данных на которых тестировали.
Я попросил человека, который этим занимался, отписаться в тему по-английски. Надеюсь, в течение 2-3 дней он найдет время.

Цитата:
Наши ПМы рассуждают так:
1. Блокировка всей таблицы может возникнуть только если за последний период существует большое количество не финансовых переносов. С их опыта и опыты кастомеров что используют фичу такое не случаеться у них на практике (бизнесы такие наверное). Я так понял что речь идет о интервале в 1 месяц.
2. IC рекомендуеться запускать когда система минимально используеться пользователями и тут нам важно скорость выполнения. Например, в MRP некоторые транзакции удаляються по номенклатурам. При этом подходе само выполнени естественно медленее, но блокировок значительно меньше может быть. В нашем случае - это не target сценарий, ибо IC запускаеться на огромные обьемы данних не каждый день.
Чтобы пояснить: на наших подшефных предприятиях количество нефинансовых переносов зашкаливает, поскольку каждая машина подключена к складу, имеет входную и выходную ячейки. Каждые 100 штук в коробке получают серийный номер; один производственный заказ делает до 5 000 000 штук меньше, чем за неделю. Это связано со спецификой отрасли, где нужно отследить потенциально опасную партию, попавшую в соприкосновение с пищей (см. историю с микробами EHEC : ). Тем самым за 3 года набежало около 15 млн. складских проводок, из которых большая часть - переносы сер. номеров из ячейки А в ячейку Б.

Запустить закрытие склада тогда, когда хочется, можно не всегда. Подшефные заводы работают в режиме 24x7 или 24x5. Даже в последнем случае не всегда получается запустить закрытие на выходных, поскольку внутренный распорядок концерна предполагает закрытие месяца и подготовку отчетности в первые три рабочих дня. Если первый день месяца выпадает на понедельник - среду, то возможности ждать нет, а по опыту незакрытые приходы/расходы за месяц значительно искажают баланс.

Последний раз редактировалось EVGL; 08.06.2011 в 10:45.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
DynamicsAxSCM: Changes in Sales and Transfer Order Picking from Microsoft Dynamics AX 4.0 to Dynamics AX 2009 Blog bot DAX Blogs 0 18.05.2009 02:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:53.