Magento 1.9: Tabelas de preços de produtos - como elas funcionam?

9

Magento tem muitas tabelas para gerenciar preços

Parece-me que:

  • nas páginas de produto / categoria, os preços do produto são carregados das tabelas catalog_product_flat .
  • nas páginas de pesquisa, a tabela _idx é usada (acho que para o filtro de faixa de preço).

Tabela com dados

| Tabela Notas |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | tem dados - tabela principal |
| catalog_product_index_price_idx | tem dados |
| catalog_product_index_price_tmp | tem dados |

Tabela sem dados

| Tabela Notas |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | sem dados |
| catalog_product_index_price_bundle_opt_idx | sem dados |
| catalog_product_index_price_bundle_opt_tmp | sem dados |
| catalog_product_index_price_bundle_sel_idx | sem dados |
| catalog_product_index_price_bundle_sel_tmp | sem dados |
| catalog_product_index_price_bundle_tmp | sem dados |
| catalog_product_index_price_cfg_opt_agr_idx | sem dados |
| catalog_product_index_price_cfg_opt_agr_tmp | sem dados |
| catalog_product_index_price_cfg_opt_idx | sem dados |
| catalog_product_index_price_cfg_opt_tmp | sem dados |
| catalog_product_index_price_downlod_idx | sem dados |
| catalog_product_index_price_downlod_tmp | sem dados |
| catalog_product_index_price_final_idx | sem dados |
| catalog_product_index_price_final_tmp | sem dados |
| catalog_product_index_price_opt_agr_idx | sem dados |
| catalog_product_index_price_opt_agr_tmp | sem dados |
| catalog_product_index_price_opt_idx | sem dados |
| catalog_product_index_price_opt_tmp | sem dados |

Portanto, parece que existem apenas 3 tabelas que possuem dados:

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

A única tabela usada atualmente é catalog_product_index_price , a navegação em camadas a utiliza para filtrar os produtos por preço. (consulte Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tabelas: catalog_product_index_price

| entity_id | customer_group_id | website_id | tax_class_id | preço | preço final | min_price | max_price | preço_ier | preço_grupo |

Ele hospeda todas as combinações de sites / grupo de clientes. Minha matemática de permutação não é muito boa de qualquer maneira, suponha que você tenha:

  • 100.000 produtos
  • 2 sites (um escopo de atributo de preço definido como site)
  • 10 grupos de clientes

=> 100.000 * 2 * 10 = 2.000.000 linhas

Se você não usar preços diferentes para grupos de clientes diferentes, acabará ocupando muito espaço no DB e a reindexação dos preços será muito lenta. (Como basicamente todas as 20 linhas de cada produto conterão os mesmos valores)

Questões:

  1. É seguro excluir todas as tabelas vazias acima?
  2. Por que existem 3 tabelas catalog_product_index_price com dados, mas apenas 1 é realmente usado?

Otimização:

  1. Seria possível reduzir a quantidade de linhas na tabela de índices, caso os preços do produto sejam iguais para todas as combinações?
Fra
fonte
11
Quanto a todas as tabelas que não posso responder, mas algumas como catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x e catalog_product_index_price_downlod_x só terão dados se você tiver produtos agrupados, configuráveis ​​e disponíveis para download no site. Os outros podem ser utilizados para armazenar o preço final com moedas secundárias etc, mas não sou positivo.
Eirik

Respostas:

2

É seguro * excluir todas as tabelas vazias acima?

Essas tabelas vazias serão preenchidas quando o Magento reindexar e o catálogo tiver produtos para o tipo de produto especificado.
Deve ser seguro remover a tabela _idx que o Magento irá recriá-los durante a reindexação.

Por que existem 3 tabelas com dados, mas apenas 1 é realmente usado?

A tabela idx e a tabela tmp são usadas apenas para indexação:

  • _tmp está vazio e será preenchido durante a reindexação
  • _idx é a tabela de índice real
Quisse
fonte
desculpe sua resposta está apenas dizendo nada para mim.
Fra
Você pode ser mais específico sobre o que não está claro?
Quisse
Eu sei que essas tabelas são índice, eu sei que você pode truncar o índice (você está dizendo que não pode, mas isso não é verdade, você só precisa reindexar depois) você está dizendo nada de novo .... se você não tiver uma resposta para a pergunta, você deve postar um comentário, não uma resposta
Fra
Desculpe por tentar ajudar, você já leu minha resposta? Você realmente precisa colocar minhas respostas ao lado de suas perguntas.
Quisse
Agora eu fiz isso por você. Espero que possamos ter um diálogo construtivo para resolver a questão.
Quisse 5/12