Оптимизация нагрузки на базу данных
Last updated
Last updated
Базовая информация о работе агентов и их времени выполнения описано отдельно:
Подробное описание функций агента
В этой статье рассмотрим обмен с точки зрения нагрузки на базу данных сайта. Если говорить коротко, то везде, где есть галочка "обменивать только измененные элемент", нужно ее ставить для уменьшения нагрузки при обмене.
Теперь рассмотрим как происходит обмен в разных сценариях.
Исходить будем из того, что в каталоге имеется 10 000 товаров.
Если не применять галочку обмена только измененными элементами, модуль будет проходить по всем обмениваемым элементам постоянно и по кругу.
Пример:
чтобы пройти по всем 10 000 товарам модулю потребуется 100 шагов, каждый из которых будет забирать по 100 товаров для проверки изменений -- это касается цен и карточек товаров
на остатки логика немного другая, там модуль может проходить до 1000 позиций за 1 шаг
Каждый шаг модуль считывает те же товары или остатки из БД сайта и сравнивает их с данными из МС.
Общая логика при таком обмене будет примерно такая:
Считать 100 товаров из МС (или 1000 товаров для остатков и цен)
Сделать выборку считанных товаров из БД сайта на основе внешних кодов
Проверить данные с сайтом и внести только изменения
При такой модуль будет постоянно нагружать как API МоегоСклада, так и базу сайта лишними проверками.
Если мы используем только именные данные из МС, то модуль будет раз в сутки нагружать базу полным обменом (можно выбрать время полного обмена) и далее работать только с теми элементами, которые были обновлены недавно. Механизм устроен так, что модуль не пропускает измененные данные в МС.
Такой подход не работает на:
агенте остатков (нет технической возможности)
агенте групп (нет необходимости использовать такой подход)
агенте скидок (нет технической возможности)
Поэтому для этих агентов критичен шаг выполнения и частота запуска.
Вместо остатков можно использовать быстрые остатки, правда они при полном обмене сильно нагружают базу, но потом это нагрузки практически нет и остатки обмениваются практически моментально.