Почему у Magento есть фондовый индекс?

12

Я мог бы быть быть немного близоруким , но я не могу найти причины , лежащие в Magento с индексом акций , когда cataloginventory_stock_statusи cataloginventory_stock_status_idxидентичны по структуре.

Единственные различия, которые я могу найти на уровне таблицы:

  1. Есть небольшое изменение в количестве строк
  2. cataloginventory_stock_status имеет 3 ограничения внешнего ключа, которые не найдены в таблице индексов.

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

джон-JH
источник
Очень интересно!
Парасуд

Ответы:

10

Процесс индексирования сначала записывает значения в _idxтаблицу, чтобы он не мешал действиям чтения в основной таблице во время ее работы.
Когда все значения вставлены в _idxтаблицу, все значения копируются в основную таблицу.

Посмотрите, как Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAllвыглядит.
Также смотрите мои комментарии в коде ниже:

public function reindexAll()
{
    $this->useIdxTable(true); //tell the indexer to use the _idx table
    $this->beginTransaction();
    try {
        $this->clearTemporaryIndexTable(); //clear data from the _idx table

        foreach ($this->_getTypeIndexers() as $indexer) {
            $indexer->reindexAll(); //reindex everything in the _idx table
        }

        $this->syncData(); //clear the main table and insert the values from the _idx table.
        $this->commit();
    } catch (Exception $e) {
        $this->rollBack();
        throw $e;
    }
    return $this;
}
Мариус
источник