Mecánica de las nuevas tablas de registro de cambios (ej: catalog_category_product_cat_cl)

15

Acabo de ver las tablas mencionadas en la base de datos. Creo que son nuevos en Magento EE 1.13 y podrían estar relacionados con la nueva indexación.

+ ---------------------------------------- +
El | catalog_category_flat_cl |
El | catalog_category_product_cat_cl |
El | catalog_category_product_index_cl |
El | catalog_product_flat_cl |
El | catalog_product_index_price_cl |
El | cataloginventory_stock_status_cl |
El | catalogsearch_fulltext_cl |
El | enterprise_url_rewrite_category_cl |
El | enterprise_url_rewrite_product_cl |
El | enterprise_url_rewrite_redirect_cl |
+ ---------------------------------------- +

¿Cómo funcionan esas tablas? ¿Cuál es el propósito?

¿Se limpian automáticamente después de un tiempo?

¿Tiene sentido incluir esas tablas en las copias de seguridad?

Alex
fuente
Semi relacionado: magento.stackexchange.com/a/3930/69
B00MER

Respuestas:

15

Estas _cltablas de registro de cambios (de ahí el sufijo) se llenan a través de activadores MySQL cada vez que se cambia una entidad específica.
Luego, el trabajo cron del indexador (que se ejecuta cada minuto) aplicará estos registros de cambios como actualizaciones incrementales a los índices de Magento.

El beneficio de usar los desencadenadores MySQL para llenar las tablas de registro de cambios es que funciona incluso si se agregan nuevos datos usando SQL simple, sin involucrar a PHP.
Esto elimina la necesidad de ejecutar una reindexación completa si está utilizando un método de importación no estándar (o incluso el módulo Mage_ImportExport).

Vinaí
fuente
¿Es seguro truncar estas tablas de vez en cuando? Actualmente a 25m de registros.
Steve Robbins
No estoy seguro. El problema es que Magento podría depender de la versión almacenada en esa tabla. Expresaría que es seguro eliminar todo excepto la última versión, pero hágalo bajo su responsabilidad. Quizás incluso truncar sea seguro, no lo sé.
Vinai
55
El módulo Enterprise_Mview ya tiene la capacidad de limpiar estas tablas. Toma la última versión_id para cada tabla enterprise_mview_metadatay elimina cualquier fila con una versión_id más baja que esa. Puede habilitar la limpieza de índice yendo a Sistema> Configuración> (sección AVANZADA)> Administración de índice y estableciendo Habilitar limpieza programada en Sí en Programa de limpieza de índice.
Tyler V.