Обновление количества товаров напрямую в базу

Вопрос по обновлению количества товаров.
CommerceMl отрабатывает очень медленно. Обновления цен и остатков на 1 продавца 2500 товаров идет около 10 минут.

Можно ли просто напрямую в базу данных записать количество по позициям в таблицу cscart_products, в поле amount по product_id?
Или есть подводные камни в данном варианте?

На базе данных mysql 8 скорость будет примерно в 10 раз выше для многих запросов, стоит протестировать, плюс hdd необходимо поставить скоростной для надёжности PHP поствьте восьмой.

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

В принципе, можно, но сначала надо убедиться, что у вас не задействованы таблицы ult_product_…, как минимум для цен. Но можно воспользоваться и стандартной функцией изменения количества товара.

чаще всего это и самый медленный участок, я не так давно в свой контроллер вместо прямой записи в базу поставил функцию изменения количества товара, соответственно, с отправкой уведомлений, и скорость обработки 2 тысяч товаров выросла с 20 секунд до 3 минут.

Ну он может замедлять только если реальные подписки, а так это всего лишь 1 запрос в базу на наличие подписок, только конечно если у вас там на хуки не повесился кто нибудь.

Если у вас Вариации и настройка меня основную вариацию в случаи ее отсутствия, то напрямую в базу если будете делать надо будет потом после перестройку делать вариаций.

Про вариации не совсем понял. Да у меня вариации, при этом не просто вариации, а еще и общие товары для маркетплейса.

Почему придется делать перестройку вариаций, если я просто обновлю количество по product_id ?

А какая стандартная функция для изменения количества товара?

Просто у меня есть нюанс )
product_code у многих товаров совпадают (для нас это артикул в 1с). Получаются много товаров разных продавцов с одним и тем же product_code.
Поэтому обновления по product_code я сделать не могу и именно по этому не подходит стандартный импорт и другие сторонние модули.

ult_product… - таких таблиц в базе нет

Сервер VPS - стоит nginx + php-frm 7.4 +mysql 5.7.38
Т.е если перейти на php 8 b mysql обновить, скорость сильно возрастет?

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

Да, стоит такая опция.
Screenshot_99

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

Если вам подойдет платное решение - посмотрите Модуль от RetailFactory.ru: Автоматизация прайсов поставщиков. Импорт товаров, обновление цен и остатков из Excel/XML/CSV файлов

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

Я смотрел этот модуль. И связывался с техподдержкой RetailFactory.
Как я уже писал выше “product_code у многих товаров совпадают (для нас это артикул в 1с). Получаются много товаров разных продавцов с одним и тем же product_code.
Поэтому обновления по product_code я сделать не могу и именно по этому не подходит стандартный импорт и другие сторонние модули.”

Подскажите, что за “функцию изменения количества товара” ?

Я не помню сейчас как она точно называется, что-то вроде fn_product_change_amount

Что-то мне подсказывает, что нет такой функции, есть функция по изменению кол-во через дельту и знак.
Я про последнюю версию.

В старых была fn_update_product_amount установка кол-во
function fn_update_product_amount($product_id, $amount, $product_options, $sign)

А в новых это уже дельта
function fn_update_product_amount($product_id, $amount_delta, $product_options, $sign, $notify = true, $order_info = [])

amount в старой версии имела то же значение, что и дельта сейчас - число, НА которое изменяется количество товара.