Perché Magento ha un indice azionario?


12

Potrei essere un po 'miope ma non riesco a trovare il ragionamento dietro Magento con un indice azionario quando cataloginventory_stock_statuse cataloginventory_stock_status_idxsono identici nella struttura.

Le uniche differenze che posso trovare a livello di tabella sono:

  1. C'è una piccola variazione nel numero di righe
  2. cataloginventory_stock_status ha 3 vincoli di chiave esterna non trovati nella tabella dell'indice.

Presumo che ci sarà qualche motivo relativo al blocco o ad alcuni processi in cui ciò influirebbe sul checkout ma non è possibile trovare informazioni sul perché.


Molto interessante!
Paras Sood,

Risposte:


10

Il processo di indicizzazione scrive inizialmente i valori nella _idxtabella in modo da non interferire con le azioni di lettura sulla tabella principale mentre è in esecuzione.
Quando tutti i valori vengono inseriti nella _idxtabella, tutti i valori vengono copiati nella tabella principale.

Dai un'occhiata a come Mage_CatalogInventory_Model_Resource_Indexer_Stock::reindexAllappare.
Vedi anche i miei commenti nel codice qui sotto:

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;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.