Чому Magento має фондовий індекс?


12

Я, можливо, трохи недалекоглядний, але я не можу знайти міркування того, що Magento має фондовий індекс, коли cataloginventory_stock_statusі cataloginventory_stock_status_idxоднакові за структурою.

Єдині відмінності, які я можу знайти на рівні таблиці:

  1. Існує невелика різниця в кількості рядків
  2. cataloginventory_stock_status має 3 обмеження зовнішніх ключів, не знайдені в таблиці індексів.

Я припускаю, що це буде якась причина, що стосується блокування чи певних процесів, де це вплине на оформлення замовлення, але не можу знайти інформацію, чому.


Дуже цікаво!
Paras Sood

Відповіді:


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;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.