Pourquoi Magento a-t-il un indice boursier?

12

Je suis peut-être un peu myope, mais je ne trouve pas le raisonnement derrière Magento ayant un indice boursier quand cataloginventory_stock_statuset cataloginventory_stock_status_idxsont identiques dans la structure.

Les seules différences que je peux trouver au niveau de la table sont:

  1. Il y a une petite variation dans le nombre de lignes
  2. cataloginventory_stock_status a 3 contraintes de clé étrangère introuvables sur la table d'index.

Je suppose qu'il va y avoir une raison liée au verrouillage ou à certains processus où cela affecterait le paiement, mais je ne peux pas trouver d'informations sur pourquoi.

john-jh
la source
Très intéressant!
Paras Sood

Réponses:

10

Le processus d'indexation écrit les valeurs dans un premier temps dans la _idxtable afin qu'il n'interfère pas avec les actions de lecture sur la table principale pendant son exécution.
Lorsque toutes les valeurs sont insérées dans la _idxtable, toutes les valeurs sont copiées dans la table principale.

Jetez un oeil à quoi Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAllressemble.
Voir aussi mes commentaires dans le code ci-dessous:

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
la source