Mecânica das novas tabelas de registros de alterações (ex: catalog_category_product_cat_cl)

15

Acabei de ver as tabelas mencionadas no banco de dados. Eu acho que eles são novos no Magento EE 1.13 e podem estar relacionados à nova indexação.

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

Como essas tabelas funcionam? Qual é o propósito?

Eles são limpos automaticamente após algum tempo?

Faz sentido incluir essas tabelas nos backups?

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

Respostas:

15

Essas _cltabelas de changelog (daí o sufixo) são preenchidas via gatilhos do MySQL sempre que uma entidade específica é alterada.
Em seguida, o trabalho cron do indexador (em execução a cada minuto) aplicará esses registros de alterações como atualizações incrementais nos índices do Magento.

O benefício do uso de gatilhos do MySQL para preencher as tabelas de registro de alterações é que ele funciona mesmo que novos dados sejam adicionados usando SQL simples, sem envolver PHP.
Isso elimina a necessidade de executar uma reindexação completa se você estiver usando um método de importação não padrão (ou mesmo o módulo Mage_ImportExport).

Vinai
fonte
É seguro truncar essas tabelas de tempos em tempos? Atualmente em 25m de registros.
Steve Robbins
Não tenho certeza. O problema é que o Magento pode depender da versão armazenada nessa tabela. Eu diria que é seguro excluir todos, exceto a versão mais recente, mas faça-o por seu risco. Talvez até truncar seja seguro - não sei.
Vinai
5
O módulo Enterprise_Mview já tem a capacidade de limpar essas tabelas. Ele pega o version_id mais recente de cada tabela enterprise_mview_metadatae exclui todas as linhas com um version_id menor que isso. Você pode ativar a limpeza de índice acessando Sistema> Configuração> (seção AVANÇADO)> Gerenciamento de índice e definindo Ativar limpeza programada como Sim em Programação de limpeza de índice.
Tyler V.