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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.06.2016, 10:38   #1  
PTG is offline
PTG
Участник
 
19 / 16 (1) ++
Регистрация: 05.08.2004
AX2012R3: полная синхронизация данных POS-магазина
Всем доброго дня!

Используем версии: AX2012R3 CU9, MSSQL2012

Справочник продуктов содержит 800 000 наименований.
Все продукты необходимо загружать в магазины.

Задание 1040 Продукты.
Первоначальная полная синхронизация данных с базой магазина(загрузка задания 1040) выполняется в среднем в течении 40-60 минут.

Повторная полная синхронизация идет свыше 6-и часов... далее терпение заканчивается...процесс на стороне базы магазина прерываем.

Заметили: SQL основное время выполняет delete from inventtable

Прошу тех, кто сталкивался с подобной проблемой, помочь в ее решении.
Создавать заново базы магазинов совсем не хочется.
Про распределение измененных данных речь не идет, именно полная синхронизация.
Старый 21.06.2016, 12:28   #2  
ZornFire is offline
ZornFire
MS Dynamics AX 2012 R3
Аватар для ZornFire
Oracle
Злыдни
Ex AND Project
 
333 / 76 (3) ++++
Регистрация: 12.01.2009
Адрес: Москва
Я правильно понял, что у Вас синхронизация выполняется не через пакетный сервер, дополняя или меняя существующие н.н., а именно напрямую синхронизируете таблицы через БД посредством MS SQL?
delete from inventtable это вот зачем? по этой логике у Вас, на БД магазина, из справочника н.н., сначала удаляются все записи, затем загружаются по новой из офисной БД.
По мне, так правильнее было бы, настроить пакетные сервера, где данные буду обновляться, не общем массивом в 800к, а только те что изменены\удалены.

Или как минимум перенастроить процесс синхронизации, что справочники н.н. не удалялись, а потом заливались по новой, а апдейтелись(update from inventtable).

Если не сможете своими силами - наймите на эту задачу консалтинговую компанию. На мой взгляд это оптимальный вариант.
__________________
"Человек человеку волк, а зомби зомби зомби." (с)
С Уважением, Алексей Кабанов

Последний раз редактировалось ZornFire; 21.06.2016 в 12:30.
Старый 21.06.2016, 15:38   #3  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
800 000 ..... чем торгуете если не секрет?
Действительно ли нужно все? Ведь можно настроить так что магазин А будет загружать только продукты для магазина А, а магазин Б только те что на полках лежат у магазина Б.

Зря change tracking использовать не хотите, вещь хорошая. Опять же наврятли вы все 800 000 продуктов каждый день-неделю меняете.

RetailPOS база на каком SQL сидит? Express?
Индексы периодически оптимизируете?
Есть ли триггеры на ax.InventTable?

RetailPOS база локальная в магазине или в облаке?

ЗЫ Интересно сколько времени у вас занимает calculate/post statement.
ЗЗЫ 800 000 .... сколько времени инвентаризация займет....
ЗЗЗЫ Бизнес решение, которое переодически загружает 800 000 продуктов вызывает явное подозрение...
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 21.06.2016, 15:39   #4  
PTG is offline
PTG
Участник
 
19 / 16 (1) ++
Регистрация: 05.08.2004
Цитата:
Сообщение от ZornFire Посмотреть сообщение
Я правильно понял, что у Вас синхронизация выполняется не через пакетный сервер, дополняя или меняя существующие н.н., а именно напрямую синхронизируете таблицы через БД посредством MS SQL?
delete from inventtable это вот зачем? по этой логике у Вас, на БД магазина, из справочника н.н., сначала удаляются все записи, затем загружаются по новой из офисной БД.
По мне, так правильнее было бы, настроить пакетные сервера, где данные буду обновляться, не общем массивом в 800к, а только те что изменены\удалены.

Или как минимум перенастроить процесс синхронизации, что справочники н.н. не удалялись, а потом заливались по новой, а апдейтелись(update from inventtable).

Если не сможете своими силами - наймите на эту задачу консалтинговую компанию. На мой взгляд это оптимальный вариант.
Описанное в первом посте - это стандартный функционал АХ2012R3. Пакетные сервера присутствуют. Мы ничего не вкручивали.
delete from inventtable - это стандартно тоже, видимо чтобы отработали триггеры...
Писал именно про полную синхронизацию... распределение изменений работает.
Проблема растет из вот отсюда: добавляем новый магазин, он либо автоматом, либо по принуждению попадает в ассортимент, что влечет за собой вызов полной синхронизации задания 1040Продукты. А делать под каждый магазин свой ассортимент, когда он единый для магазинов...
Старый 21.06.2016, 15:46   #5  
PTG is offline
PTG
Участник
 
19 / 16 (1) ++
Регистрация: 05.08.2004
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
800 000 ..... чем торгуете если не секрет?
Действительно ли нужно все? Ведь можно настроить так что магазин А будет загружать только продукты для магазина А, а магазин Б только те что на полках лежат у магазина Б.

Зря change tracking использовать не хотите, вещь хорошая. Опять же наврятли вы все 800 000 продуктов каждый день-неделю меняете.

RetailPOS база на каком SQL сидит? Express?
Индексы периодически оптимизируете?
Есть ли триггеры на ax.InventTable?

RetailPOS база локальная в магазине или в облаке?

ЗЫ Интересно сколько времени у вас занимает calculate/post statement.
ЗЗЫ 800 000 .... сколько времени инвентаризация займет....
ЗЗЗЫ Бизнес решение, которое переодически загружает 800 000 продуктов вызывает явное подозрение...
Ассортимент единый.
Индексы обязательно. Ежедневно.
Триггеры стандартно на ax.InventTable есть.
База локальная.
Подозрение вызывает стандартный функционал, который вызывает полную синхронизацию.
Старый 22.06.2016, 07:10   #6  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Доброе утро!
Поделитесь пожалуйста кто как настраивает ассортименты для магазинов в ситуации когда ассортимент единый(300-500 тыс позиций) и количество магазинов 30-50. Создать один ассортимент для всех магазинов или для каждого магазина создавать свой ассортимент?
Старый 22.06.2016, 09:21   #7  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Ситуация странная, в R2, который сам внедрял точно не было такого - на новый магазин создавалось задание, остальные не трогались. По R3 уточняю у коллег, но это очень странно, если добавление магазина пересоздает справочник везде.

Ну и в целом, какие-то бешенные у вас ассортименты. Это что, запчасти какие-то? Даже в продуктовых гиперах активных позиций на магазин максимум тысяч 100 и это с запасом.
__________________
Ivanhoe as is..
Старый 22.06.2016, 09:57   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Говорят, что нет проблемы описанной выше. Точно нет доработок? Как у вас заведены магазины, группы (или как они там называются в r3), ассортименты?
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: PTG (1).
Старый 22.06.2016, 10:04   #9  
PTG is offline
PTG
Участник
 
19 / 16 (1) ++
Регистрация: 05.08.2004
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Ситуация странная, в R2, который сам внедрял точно не было такого - на новый магазин создавалось задание, остальные не трогались. По R3 уточняю у коллег, но это очень странно, если добавление магазина пересоздает справочник везде.

Ну и в целом, какие-то бешенные у вас ассортименты. Это что, запчасти какие-то? Даже в продуктовых гиперах активных позиций на магазин максимум тысяч 100 и это с запасом.
В R2, если не ошибаюсь механизм аналогичный AX5. Собственно мы перелезли с АХ5 на R3 и механизм уже другой.
Уточните пжлс еще у коллег, стоит ли под каждый магазин создавать свою отдельную группу данных канала?

С новым магазином ситуация следующая: чтобы товар был виден в магазине, этот товар должен быть включен в ассортимент, в который в свою очередь должен быть включен магазин. Так как у нас ассортимент общий (одинаковый) для всех магазинов, то мы не создаем под каждый магазин свой ассортимент.
Далее создаем новый магазин, относим его в орг. иерархию, сопоставляем с розничной категорией, включаем в имеющийся ассортимент(ассортимент пере опубликовываем) или можно первоначально указать организационную иерархию
,к уда входит магазин, но все равно ассортимент при запуске процедуры обновления ассортиментов обновится, так что повлечет запуск полной синхронизации ассортимента.

Да ассортименты бешеные: от колбасы до ручек.
Старый 22.06.2016, 17:13   #10  
PTG is offline
PTG
Участник
 
19 / 16 (1) ++
Регистрация: 05.08.2004
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Говорят, что нет проблемы описанной выше. Точно нет доработок? Как у вас заведены магазины, группы (или как они там называются в r3), ассортименты?
Фраза "нет проблемы описанной выше" сдвинула проблему...
С помощью настроек, точнее указания для каждого магазина своей группы данных канала удалось ситуацию с распределением данных - полной синхронизации привести к приемлемым временам и логам.
Старый 22.06.2016, 17:43   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ZornFire Посмотреть сообщение
delete from inventtable это вот зачем?
Именно

Цитата:
Сообщение от PTG Посмотреть сообщение
В R2, если не ошибаюсь механизм аналогичный AX5. Собственно мы перелезли с АХ5 на R3 и механизм уже другой.
и в r2 и в r3 существует понятие "иерархия таблиц"
в r2 эта иерархия настраивалась в справочнике аксапты.
в r3 эта иерархия существует в виде xml-файла, изменяется только в текстовом редакторе.

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

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

повторюсь, в r3 точно такой же механизм. только настройка в xml-файле, а не в аксапте. насколько я помню, интеллекта в этот механизм не добавляли.

продукты, насколько я помню, находятся где-то в середине иерархии.
насколько я помню, к продуктам были пристроены с десяток других таблиц.

снятие галочки "Каскадное обновление" решает проблему с производительностью
но добавляет кучу геморроя с точки зрения целостности данных.

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

==========================
кстати, будете добавлять свои таблицы, также предельно внимательно следите за каскадным обновлением. с одной стороны каскадное обновление действительно гарантирует целостность. с другой стороны...

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

==========================
по идее число delete/insert должно быть минимальным всегда.
прежде чем менять настройки, галочки и джобы, разберитесь почему вообще возникают команды на удаление при реинициализации.

Последний раз редактировалось mazzy; 22.06.2016 в 17:48.
За это сообщение автора поблагодарили: PTG (1), AvrDen (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Setting Up A Retail Store With POS Blog bot DAX Blogs 1 09.12.2013 06:16
emeadaxsupport: AX 2012 R2 for Retail - Configuring POS for test mode with Dynamics Online payment service Blog bot DAX Blogs 0 11.10.2013 03:12
emeadaxsupport: AX for Retail: Managing and Maintaining POS Customizations Blog bot DAX Blogs 0 09.07.2013 06:18
Rahul Sharma: Dynamics AX for Retail POS Development Blog bot DAX Blogs 2 19.09.2011 15:30
Синхронизация данных двух БД (разные хосты) одним приложением Buba DAX: Программирование 2 02.02.2006 07:51
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:02.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.