2012-04-08 10 views
5

He intentado realmente entender las relaciones cataloginventory_stock: sé que tanto las tablas stock_item como stock_status se actualizan cuando se modifica una acción, pero no pude determinar si realmente se requiere la tabla stock_status_idx .¿Cuál es el objetivo de la tabla cataloginventory_stock_status_idx?

Según lo que puedo ver, la tabla stock_status_idx contiene la misma información que la tabla stock_status. ¿Es solo una tabla temporal? No vi ningún problema con el estado del stock incorrecto si actualicé manualmente las tablas stock_item y stock_status, pero no actualicé la tabla stock_status_idx.

La cosa es ... pensé que de alguna manera se usa para el almacenamiento en caché/el indexador. Sin embargo, incluso si no modifiqué la tabla stock_status_idx, el estado del stock se muestra bien en el backend y en la interfaz.

Entonces, ¿cuál es el punto de la tabla stock_status_idx?

Muchas gracias por su ayuda.

Respuesta

1

idx La tabla idx se utiliza solo cuando Magento necesita seleccionar muchos productos en función de su stock elemento, por lo que el índice en estas tablas es más rápido que el uso de las tablas de inventario principal.

Le recomiendo que escriba sus datos en esta tabla también. O mejor, utilizar la API de Magento o la aplicación Magento sobre PHP para escribir en la base de datos de Magento, es mucho más seguro.

+0

Gracias por su respuesta! Esa no es la respuesta técnica que habría esperado desafortunadamente. ¿Sabes qué función realmente regenera la tabla idx? No importa lo que encontré, reindexProducts ($ ids), reindexAll - none reindexed la tabla idx. SOLAMENTE cuando guardé el producto en el back-end. Pero no pude encontrar lo que inicia esto.Incluso cuando vuelvo a indexar la entidad de valores en Magento en Index Management, no se actualiza. ¡Gracias! – MageSeb

+0

El uso exacto de esta tabla se encuentra en 'Mage_CatalogInventory_Model_Mysql4_Indexer_Stock_Default :: _ prepareIndexTable()' y el producto configurable/agrupado en sus respectivas clases también. Busque 'getIdxTable()'. Hay una llamada a 'insertFromSelect' que se inserta efectivamente en' cataloginventory_stock_status_idx'. –

+0

Las tablas _idx son tablas de índice temporales en Magento. es decir. se completan durante un proceso de reindexación y luego se vacían cuando se completa el proceso de reindexación. – bigtony

0

Indagué en esto por la misma razón (para actualizar cantidades de stock directamente en Mysql) y usaré la función de indexador incorporada de Magento con el "cataloginventory_stock". Me gusta esta característica, ya que solo lleva unos segundos ejecutarla en mi servidor.

se puede llegar al indexador Magento y obtener alguna información buena

/[tienda de su casa]/corteza continuación, ejecute:/usr/bin/php -f información indexer.php

aquí es el crontab línea para ejecutar solo el re-índice de inventario del catálogo: 30 3 * * */usr/bin/php -f /home/client/www/shell/indexer.php - --reindex cataloginventory_stock

3

Me preguntaba la misma pregunta y decidí cavar ya que no pude encontrar una respuesta en ningún lado. Parece que _tmp y _idx se usan como titulares de temperatura para sus datos indexados.

Por ejemplo, se puede ver en el método reindexAll() en app/code/core/Mage/Catalog/Model/Resource/Category/Indexer/Product.php y usted entenderá que está utilizando tablas _idx para almacenar temporalmente es de datos al generar los índices:

$this->useIdxTable(true); 
... 
$idxTable = $this->getIdxTable(); 
.... 
$query = $select->insertFromSelect($idxTable, ... 

Al final del mismo método notará una buena llamada al método $this->syncData(). ¡Probablemente lo adivinaste! La función vive en app/code/core/Mage/Index/Model/Resource/Abstract.php y está haciendo precisamente eso, sincroniza la _idx con principal:

$this->_getWriteAdapter()->delete($this->getMainTable()); 
$this->insertFromTable($this->getIdxTable(), $this->getMainTable(), false); 
$this->commit(); 

mejor de las suertes!

+0

Esta respuesta debe ser aceptada. ¡Gracias! La misma respuesta en otras palabras: http://magento.stackexchange.com/a/35518/6291 – Phil

Cuestiones relacionadas