|
|
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
VolochkovamazzyVolochkova Но зато человеку достоверно известно: Volochkova Но логика построчной обработки записей, накладывает ущербный отпечаток на кодеров... Я пока от Вас ни одного опровержения не видел. Мне одного того что для каждой записи RecID генерируется на клиенте достаточно.. Могу в картинках... Вам же уже сказали: 1. читайте доку про update_recordset, insert_recordset 2. построчно на клиента переносятся результаты запросов. Запросы с агрегирующими функциями (типа select count(recid) from custtable group by custaccount) выполняются на сервере. Получившиеся результаты построчно переносятся на клиента. Но строк в результате гораздо меньше, чем в исходной таблице. Так работает курсор. В общем, пилите дальше. Это и есть построчная гемороидалья.... Можно дальше не пилить... :-) Вместо отправки на сервер запроса - проведи документ и получить результат... Пользователь сидит и ждет.. когда же для каждой строки отработают куча маленьких запросиков.. Достаточно взглянуть SQL профайлером, что делает процесс... как бегает курсором по таблицам.. :-) Так что красивые маркетинговые фишки... это не клиент серверная обработка. :-)[/quot] Кстати, вот о чем сейчас подумал. 1. Куча маленьких, одинаковых, заранее скомпилированных, закэшированных, параметризированных (чтобы сработал cost optimize) запросов бывает лучше, чем десяток монстроидальных запросов Поэтому пилите, пилите. Изучайте. Узнавайте больше. 2. Я тут вспомнил одного клиента, у которого подобные "шпециалисты" выключили Аксаптовское кэширование таблиц. В результате у них Аксапта действительно занималась ddos-атаками на sql-сервер, постоянно запрашивая параметры (например, стандартную величину округления = 0.01 руб, или максимальную величину ошибки в проводках = 0.01 руб). Когда вернули таблицам стандартные параметры кэширования, то ddos-атаки прекратились, потому что Аксапта держала записи в своем кэше и не посылала запросы к этим таблицам на sql. Если у организации, где работает Volochkova есть вменяемые люди, то проверьте свойства CacheLookup по крайней мере у таблиц CompanyInfo, LedgerParameters, InventParameters, CustParameters, VendParameters, Currency. У этих таблиц совйство CacheLookup должно быть либо Found, либо EntireTable. Разработчики Аксапты очень серьезно думали о производительности. Не будьте волочковыми, думайте о последствиях своих действий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 14:14 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
iscrafm если документ не "проведен", то его записи не учавствуют в учете (товар не оприходован). А учитывается весь документ или ничего. Одна транзакция. Поэтому и непонятно, как можно взять одну запись из документа в тот момент, пока транзакция не завершена. Подозрение только на то, что записи обрабатываются построчно, а не в одной транзакции (о чем говорит Волочкова). Могу ошибаться, посмотреть негде сейчас. Внутри транзакции тоже используются блокировки, чтобы "нельзя" было взять одну запись из документа. "Нельзя" в кавычках потому, что даже в этом случае можно, но уже надо явно с хинтами возиться. Но это Вы и без меня наверное знаете. У ТС проблема с блокировками, а не с грязным чтением, так что нетранзактное чтение тут не причем. Разве что там динамические курсоры используются. Возможно где-нибудь индексов не хватает и накладывается более суровая блокировка чем могла бы быть. А в аксапте какие транзакции - сиквельные или распределенные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 14:48 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
BладимирА в аксапте какие транзакции - сиквельные или распределенные? сиквельные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 15:49 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
iscrafmПоэтому и непонятно, как можно взять одну запись из документа в тот момент, пока транзакция не завершена. Как SQL сервер 2000 это обеспечивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 20:40 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
belugin, не совсем понял вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 21:02 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
belugin, В ситуации, которую Вы описали, при приеме на склад 2-х позиций происходит забор одной из них и с последующим откатом всего документа. Вот и вопрос возник... а каким образом можно взять позицию обрабатываемого документа, если он еще полностью не обработан. Вы же привели эту ситуацию. Мне она представляется нереальной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 21:10 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
iscrafmbelugin, В ситуации, которую Вы описали, при приеме на склад 2-х позиций происходит забор одной из них и с последующим откатом всего документа. Вот и вопрос возник... а каким образом можно взять позицию обрабатываемого документа, если он еще полностью не обработан. Вы же привели эту ситуацию. Мне она представляется нереальной. Опишите, пожалуйста, за счет чего в блокировочниках нельзя взять позицию пока транзакция не завершена. Как осуществляется изоляция транзакции и как происходит откат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 22:37 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
вот тут, вроде, описано довольно подробно но поищу еще - где-то с картинками было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 22:44 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
beluginiscrafmbelugin, В ситуации, которую Вы описали, при приеме на склад 2-х позиций происходит забор одной из них и с последующим откатом всего документа. Вот и вопрос возник... а каким образом можно взять позицию обрабатываемого документа, если он еще полностью не обработан. Вы же привели эту ситуацию. Мне она представляется нереальной. Опишите, пожалуйста, за счет чего в блокировочниках нельзя взять позицию пока транзакция не завершена. Как осуществляется изоляция транзакции и как происходит откат. понятия не имею причем здесь блокировочник. Позицию нельзя взять пока документ не учтен. Документ учитывается целиком или не учитывается. Эта логика практически во всех известных мне системах присутствует. Если Вы привели ситуацию когда это не так, значит для этого были основания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 22:50 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
belugin вот тут, вроде, описано довольно подробно но поищу еще - где-то с картинками было. это еще в детстве проходил. Только не пойму причем здесь логика обработки документов и уровни изоляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 22:51 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
iscrafm, READ COMMITTED Если параметр READ_COMMITTED_SNAPSHOT находится в состоянии OFF (по умолчанию), компонент Database Engine при выполнении операций считывания текущей транзакцией использует совмещаемые блокировки для предотвращения изменения строк другими транзакциями. Совмещаемые блокировки также блокируют инструкции от считывания строк, измененных другими транзакциями , пока не завершится другая транзакция. От типа совмещаемой блокировки зависит время ее освобождения. Блокировка строки освобождается перед обработкой следующей строки. Блокировка строки освобождается при чтении следующей страницы, а блокировка таблицы освобождается при завершении выполнения инструкции. еще : Выбор уровня изоляции транзакции не влияет на блокировки, примененные для защиты изменений данных. Транзакция всегда вызывает монопольную блокировку любых данных, которые она изменяет, и держит блокировку до тех пор, пока транзакция не завершится, независимо от уровня изоляции, установленного для транзакции. Для операций чтения уровни изоляции транзакций, в основном, определяют уровень защиты от эффектов изменений, сделанных другими транзакциями. 1. Есть процесс разноски документа. 2. Этот процесс разноски составляет транзакциию БД. 3. Даже если эта транзакция не содержит ничего кроме обновления остатков она должна быть изолирована от других транзакций. 4. Это изоляция достигается за счет блокировок. 5. Без блокировок при приходе вообще нельзя обойтись, можно только снизить их длительность (выполнить как можно позже) 6. Что и было сделано в Ax4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 23:13 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
Какое из этих утверждений неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2009, 23:17 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
mazzyBладимирА в аксапте какие транзакции - сиквельные или распределенные? сиквельные. Спасибо. А уровень изоляции какой? Какая схема для контроля одновременного доступа: оптимистические, пессимистические блокировки или еще чего-нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 00:05 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
BладимирА уровень изоляции какой? В формах и вне транзакций - uncommited. В транзакциях - commited. (надо отметить, что изменение данных возможно только в транзакции) Bладимир Какая схема для контроля одновременного доступа: оптимистические, пессимистические блокировки или еще чего-нибудь? В SQL 2000 - пессимистические. В SQL 2005 и версия аксапты выше AX3.0SP5 - оптимистические. Про ax3.0: http://blogs.msdn.com/aeremenk/archive/2006/07/15/666245.aspx и вообще полезный блог http://blogs.msdn.com/aeremenk/ про ax2009: http://msdn.microsoft.com/en-us/library/bb190073.aspx http://msdn.microsoft.com/en-us/library/aa854605.aspx Аксапта на msdn: http://msdn.microsoft.com/ru-ru/dynamics/ax/default(en-us).aspx Best practice http://msdn.microsoft.com/en-us/library/aa658028.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 00:31 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
mazzy В SQL 2000 - пессимистические. В SQL 2005 и версия аксапты выше AX3.0SP5 - оптимистические. И еще: в ax2009 есть ключевые слова, которые позволяют программисту задать в коде схему доступа. а в формах в ax2009 всегда используется оптимистическая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 00:36 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
belugin, к чему так много текста? Решили меня по блокировкам просветить? Это ваши уроки, я их пропускаю. update a where b = x и ,цикл по записям на клиенте или AOS с обработкой каждой, сравните. Кто о чем, а кто о блокировках и уровнях изоляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 02:37 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
update a where b = x и ,цикл по записям на клиенте или AOS с обработкой каждой, сравните. В каком из них не будет блокировок? Сейчас я отвечаю на вопрос "зачем блокировки при обработке прихода". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 06:37 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
mazzy В SQL 2005 и версия аксапты выше AX3.0SP5 - оптимистические. Еще это контроллируется позапросно и потаблично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 06:41 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
mazzyVolochkovamazzyVolochkova Но зато человеку достоверно известно: Volochkova Но логика построчной обработки записей, накладывает ущербный отпечаток на кодеров... Я пока от Вас ни одного опровержения не видел. Мне одного того что для каждой записи RecID генерируется на клиенте достаточно.. Могу в картинках... Вам же уже сказали: 1. читайте доку про update_recordset, insert_recordset 2. построчно на клиента переносятся результаты запросов. Запросы с агрегирующими функциями (типа select count(recid) from custtable group by custaccount) выполняются на сервере. Получившиеся результаты построчно переносятся на клиента. Но строк в результате гораздо меньше, чем в исходной таблице. Так работает курсор. В общем, пилите дальше. Это и есть построчная гемороидалья.... Можно дальше не пилить... :-) Вместо отправки на сервер запроса - проведи документ и получить результат... Пользователь сидит и ждет.. когда же для каждой строки отработают куча маленьких запросиков.. Достаточно взглянуть SQL профайлером, что делает процесс... как бегает курсором по таблицам.. :-) Так что красивые маркетинговые фишки... это не клиент серверная обработка. :-) Кстати, вот о чем сейчас подумал. 1. Куча маленьких, одинаковых, заранее скомпилированных, закэшированных, параметризированных (чтобы сработал cost optimize) запросов бывает лучше, чем десяток монстроидальных запросов Поэтому пилите, пилите. Изучайте. Узнавайте больше. 2. Я тут вспомнил одного клиента, у которого подобные "шпециалисты" выключили Аксаптовское кэширование таблиц. В результате у них Аксапта действительно занималась ddos-атаками на sql-сервер, постоянно запрашивая параметры (например, стандартную величину округления = 0.01 руб, или максимальную величину ошибки в проводках = 0.01 руб). Когда вернули таблицам стандартные параметры кэширования, то ddos-атаки прекратились, потому что Аксапта держала записи в своем кэше и не посылала запросы к этим таблицам на sql. Если у организации, где работает Volochkova есть вменяемые люди, то проверьте свойства CacheLookup по крайней мере у таблиц CompanyInfo, LedgerParameters, InventParameters, CustParameters, VendParameters, Currency. У этих таблиц совйство CacheLookup должно быть либо Found, либо EntireTable. Разработчики Аксапты очень серьезно думали о производительности. Не будьте волочковыми, думайте о последствиях своих действий.[/quot] Гы.. Не путайте теплое с мягким. Речь идет про блокировки здоровых таблиц.. В те таблички что Вы указали... Даже близко не блокируются.. И про производительность ни черта они не думали.. Судя по тому что я вижу... Ну или партнеры, которые решение продают... To ALL... Прекращайте пытаться "спасти бедную Volochkov" :-) Топик про недостатки Аксапты.. Если надо будет, я задам вопросы на Аксфоруме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 08:33 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
V. GoncharenkoVolochkovaВидимо я не понимаю ничего Вы действительно ОЧЕНЬ многого не понимаете авторМне одного того что для каждой записи RecID генерируется на клиенте достаточно.. Вы это каким образом определили? Вообще RecId на сервере геренируется в большинстве случаев (за исключением толстого клиента) авторЗачем при приходе товара блокировать!!!! При продаже кстати тоже... блокировки не нужны :-))) Вопрос, как видите не с MS SQL а к логике, архитектуре. Именно ее я считаю ущербной... Такие понятия, как ACID , для нас пустой звук, но архитектуры обсуждать любим.. Вам бы выйти из режима агрессивного отрицания (см. "маразм" в каждом сообщении) и начать задавать правильные вопросы на профильных форумах. А пока что резюме такое - Снятая с поддержки версия приложения - Снятая с поддержки версия СУБД - Непонятной кривизны партнерское решение Гы... Ну сколько раз твердили миру... И что что снятая с производства? СУБД а тем более версия Аксапты? Пример плиз, генерации RecID на сервере... Сейчас это делает ну точно не MS SQL. А если так, то значит это делает клиент, АОС или сам клиент.. автор- Непонятной кривизны партнерское решение. Вот не надо тут рака за камень заводить. Это между прочим продавалась как самое супер мега пупер решение.. работающие в крупных розничных сетях центральной части страны :-) И возвращаясь к вопросу топика номер раз... Получается что решение могут продать кривое/голове... С поддержки не слазить, ибо станете Волочковыми :-))) Готовьте бабки господа.. и огромные.. Ибо маркетологи пролечили уши... Итого пока именно такое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 08:40 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
miklenewVolochkova Вот табличка.. уж ХЗ насколько она стандартная.. мне от не ведомо.. Да уж. Когда я начинал изучать Axapt-у, то что такое слои было в первый день. Ради интереса сдул пыль с книг по разработке. Ax 3.0 - 20 стр, Ax 4.0 - 40 стр. Советую ещё раз вдумчиво почитать одну из этих книг. Прежде чем мне доверили что-то оптимизировать, прошло месяца три не меньше. Но я тогда уже основы знал как отче наш. И простых задач, но актуальных для организации много наделал. Знал не только как правильно, но и почему. Да и у нас практиковался такой метод, как просмотр кода более старшими товарищами. Axapta - отличная система, уже почти 3 года программирую на ней и средства что-то ускорить в ней есть. Я вообще стараюсь не лезть в БД. То что действительно бывают проблемы как со скоростью или с неудачным архитектурным решением, это да. Но 98% случаях, это не стандартная Axapta, а то что написали либо партнёры (внедренцы) или на клиенте. А вы не понимая, кто-что сделал наводите панику. На axforum.info создать тему вы по какой-то причине боитесь или не хотите, чтоб вам помогли. Пишите на непрофильном форуме, вполне конкретные проблемы вперемешку с поверхностными выводами. Если проблем много, а подсказать доброжелательных старших товарищей нет, таких которые были в своё время у меня. Это плохо. Могу помочь, стать тем самым старшим товарищем, 1-2 часа в день (по мере вашей в этом необходимости) проводить консультации по телефону или любыми другими удалёнными средствами. Если интересно, то детали можно обсудить по почте kolosov82@inbox.ru. PS: Сразу оговорюсь, на всякий случай, не терплю хамства. Мыло записал. Будет необходимость, обязательно обращусь с конкретными вопросами. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 08:41 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
beluginСейчас я отвечаю на вопрос "зачем блокировки при обработке прихода". так может наконец-то ответите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 08:43 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
belugin В каком из них не будет блокировок? Вы разницу между update table1 set ... where f1 = x и циклом на клиенте или AOS для построчной обработки записей понимаете? Разрабатывали что-нибудь самостоятельно? Естественно для корректной отработки этого цикла базу в определенных диапазонах необходимо принудительно заблокировать. Код учета документа прихода приведите, обсудим. Может так будет понятней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 08:53 |
|
||
|
Поругайте MS Dynamics AX (AXAPT`У)
|
|||
|---|---|---|---|
|
#18+
Volochkova To ALL... Прекращайте пытаться "спасти бедную Volochkov" :-) Топик про недостатки Аксапты.. Нет это топик не про недостатки Axapt-ы. Я бы эту тему назвал: Уроки логики для начинающих Идет волк по лесу, видит заяц читает здоровенную книгу. -Волк: Что это за фигню ты читаеш? -Заяц: Да вот логику изучаю... хочеш покажу пример? -Волк: Да, давай! -Заяц: Ты куриш? -Волк: Да... -Заяц: Если ты куриш значит у тебя есть деньги на сигареты, да? -Волк: Да, конечно. -Заяц: Ну, если есть деньги, то ты наврено еще и пьеш да? -Волк: Ну, да пью. -Заяц: Если пьеш и куриш, значит и в ночных клубах бываеш, да? -Волк: Да, бываю. -Заяц: Если ты бываеш в ночных клубах, значит и с девочками, наверно того... да? -Волк: Ну... как без этого. -Заяц: Значит ты не импотент! -Волк: Ух ты, здорово... буду тоже логику учить. Встречает волк медведя -Волк: Слушай, мужик, я логику изучаю, хочеш покажу пример? -Медведь: Да, давай. -Волк: Ты куриш? -Медведь: Нет. -Волк: Значит импотент!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2009, 09:18 |
|
||
|
|

start [/forum/topic.php?fid=29&msg=36006993&tid=1526681]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 503ms |

| 0 / 0 |

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