¿Por qué Magento tiene un índice bursátil?

12

Podría ser que se avistó un poco corto, pero no puedo encontrar el razonamiento detrás de Magento teniendo un índice de la bolsa cuando cataloginventory_stock_statusy cataloginventory_stock_status_idxson idénticos en estructura.

Las únicas diferencias que puedo encontrar a nivel de mesa son:

  1. Hay una pequeña variación en el número de filas.
  2. cataloginventory_stock_status tiene 3 restricciones de clave externa que no se encuentran en la tabla de índice.

Supongo que habrá algún motivo relacionado con el bloqueo o ciertos procesos en los que afectaría el pago, pero no puedo encontrar información sobre por qué.

john-jh
fuente
¡Muy interesante!
Paras Sood

Respuestas:

10

El proceso de indexación escribe los valores al principio en la _idxtabla para que no interfiera con las acciones de lectura en la tabla principal mientras se ejecuta.
Cuando todos los valores se insertan en la _idxtabla, todos los valores se copian en la tabla principal.

Echa un vistazo a cómo se Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAllve.
También vea mis comentarios en el código a continuación:

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
fuente