Проблемы при переиндексации

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Art
  • Спамер
  • Группа: Заблокирован
  • Сообщений: 59
  • Регистрация: 11.08.2010

06.01.2011 03:45

При переиндексации периодически возникают проблемы. Дело в том, что данные для индекса сначала готовятся в таблице с суффиксом idx, после чего копируются в основную таблицу. При этом удаление старых данных и копирование новых происходит в пределах одной транзакции. Все бы ничего, но перед копированием выполняется команда ALTER TABLE ... DISABLE KEYS, это слегка ускоряет операцию вставки, но неявно завершает текущую транзакцию, а это плохо. Во первых, некоторое время в основной таблице индекса отсутствуют данные, что приводит к ошибкам, во вторых, при сбое транзакцию откатить уже нельзя и таблица индекса будет пустой уже продолжительное время.
Решение следующие:
Закомментировать в файле Mage_Index_Model_Mysql4_Abstract в функции insertFromSelect следующие строки:

$to->query("ALTER TABLE {$destTable} DISABLE KEYS");
$to->query("ALTER TABLE {$destTable} ENABLE KEYS");

После правки все работает без глюков. (Все вышеизложенное верно для версии 1.4.0.1)

Кстати, в релизе 1.5.0.0-alpha1 разработчики, похоже, часточно поправили эту ошибку, при реиндексации Product Flat Data, но они просто отключают Flat при переиндексации.

Поделиться темой: