Warum hat Magento einen Aktienindex?

12

Ich bin vielleicht ein bisschen kurzsichtig, aber ich kann nicht herausfinden, warum Magento einen Aktienindex hat, wenn cataloginventory_stock_statusund cataloginventory_stock_status_idxin der Struktur identisch.

Die einzigen Unterschiede, die ich auf Tabellenebene feststellen kann, sind:

  1. Die Anzahl der Zeilen variiert geringfügig
  2. cataloginventory_stock_status 3 Fremdschlüsseleinschränkungen wurden in der Indextabelle nicht gefunden.

Ich gehe davon aus, dass es einen Grund für das Sperren oder bestimmte Prozesse geben wird, bei denen das Auschecken beeinträchtigt wird, aber keine Informationen darüber gefunden werden können, warum.

John-jh
quelle
Sehr interessant!
Paras Sood

Antworten:

10

Der Indizierungsprozess schreibt die Werte zuerst in die _idxTabelle, damit die Leseaktionen in der Haupttabelle während der Ausführung nicht beeinträchtigt werden.
Wenn alle Werte in die _idxTabelle eingefügt wurden, werden alle Werte in die Haupttabelle kopiert.

Schauen Sie sich an, wie es Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAllaussieht.
Siehe auch meine Kommentare im Code unten:

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;
}
Marius
quelle