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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.