Magento 1.9: Tabele cen produktów - jak działają?

9

Magento ma wiele tabel do zarządzania cenami

Wydaje mi się, że:

  • na stronach produktu / kategorii ceny produktów są ładowane z tabel katalog_produktu_produktu .
  • na stronach wyszukiwania używana jest tabela _idx (myślę o filtrze przedziału cenowego).

Tabela z danymi

| Tabela | Uwagi |
| --------------------------------------------- | --- --------------------- |
| katalog_produktu_index_price | ma dane - główna tabela |
| katalog_produktu_index_price_idx | ma dane |
| katalog_produktu_index_price_tmp | ma dane |

Tabela bez danych

| Tabela | Uwagi |
| --------------------------------------------- | --- --------------------- |
| katalog_produktu_index_price_bicele_idx | brak danych |
| katalog_produktu_index_price_bundle_opt_idx | brak danych |
| catalog_product_index_price_bundle_opt_tmp | brak danych |
| katalog_produktu_index_price_bicele_sel_idx | brak danych |
| catalog_product_index_price_bundle_sel_tmp | brak danych |
| katalog_produktu_index_price_bundle_tmp | brak danych |
| catalog_product_index_price_cfg_opt_agr_idx | brak danych |
| catalog_product_index_price_cfg_opt_agr_tmp | brak danych |
| catalog_product_index_price_cfg_opt_idx | brak danych |
| catalog_product_index_price_cfg_opt_tmp | brak danych |
| catalog_product_index_price_downlod_idx | brak danych |
| katalog_produktu_index_price_downlod_tmp | brak danych |
| katalog_produktu_index_price_final_idx | brak danych |
| katalog_produktu_index_price_final_tmp | brak danych |
| katalog_produktu_index_price_opt_agr_idx | brak danych |
| katalog_produktu_index_price_opt_agr_tmp | brak danych |
| katalog_produktu_index_price_opt_idx | brak danych |
| katalog_produktu_index_price_opt_tmp | brak danych |

Wygląda więc na to, że istnieją tylko 3 tabele zawierające dane:

  • katalog_produktu_index_price
  • katalog_produktu_index_price_idx
  • katalog_produktu_index_price_tmp

Jedyną faktycznie używaną tabelą jest katalog_produktu_indeks_ cena , nawigacja warstwowa używa jej do filtrowania produktów według ceny. (patrz Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tabele: katalog_produktu_index_price

| identyfikator_jednostki | ID_grupy klientów | identyfikator strony | identyfikator_klasy | cena | cena_końcowa | cena_min. | cena maksymalna | tier_price | cena_grupy |

Obsługuje wszystkie kombinacje stron internetowych / grup klientów. Moja matematyka permutacyjna i tak nie jest zbyt dobra, zakładając, że masz:

  • 100.000 produktów
  • 2 witryny (zakres atrybutu ceny ustawiony na Witryna)
  • 10 grup klientów

=> 100 000 * 2 * 10 = 2 000 000 wierszy

Jeśli nie użyjesz różnych cen dla różnych grup klientów, w końcu będziesz tracić dużo miejsca na DB, a reindeks cen będzie bardzo wolny. (Ponieważ w zasadzie wszystkie 20 wierszy dla każdego produktu będzie zawierać te same wartości)

Pytania:

  1. Czy bezpiecznie jest usunąć wszystkie powyższe puste tabele?
  2. Dlaczego istnieją 3 tabele cena_katalogowa_indeks_produktu z danymi, ale faktycznie tylko 1 jest używana?

Optymalizacja:

  1. Czy można by zmniejszyć liczbę wierszy w tabeli indeksu, gdyby ceny produktów były takie same dla wszystkich kombinacji?
Fra
źródło
1
Co do wszystkich tabel, na które nie mogę odpowiedzieć, ale niektóre, takie jak katalog_produktu_index_price_bundle_x, katalog_produktu_index_price_cfg_x i katalog_produktu_index_price_downlod_x będą miały dane tylko wtedy, gdy masz w pakiecie, konfigurowalne i możliwe do pobrania produkty w witrynie. Inne mogą być wykorzystane do przechowywania ostatecznej ceny w walutach wtórnych itp., Ale nie jestem pozytywny.
Eirik

Odpowiedzi:

2

Czy bezpiecznie jest * usunąć wszystkie powyższe puste tabele?

Te puste tabele zostaną wypełnione, gdy Magento ponownieindeksuje, a katalog zawiera produkty dla określonego typu produktu.
Powinno być bezpieczne usunięcie tabeli _idx Magento odtworzy je podczas reindeksu.

Dlaczego istnieją 3 tabele z danymi, ale faktycznie tylko 1 jest używana?

Tabela idx i tabela tmp są używane tylko do indeksowania:

  • _tmp jest pusty i zostanie wypełniony podczas reindeksu
  • _idx jest faktyczną tabelą indeksu
Quisse
źródło
przepraszam, twoja odpowiedź nic mi nie mówi.
Fra
Czy możesz bardziej precyzyjnie określić, co nie jest jasne?
Quisse,
Wiem, że te tabele są indeksem. Wiem, że możesz obciąć indeks (mówisz, że nie możesz, ale to nieprawda, po prostu musisz powtórzyć po nim), nie mówisz nic nowego ... jeśli nie masz odpowiedź na pytanie, powinieneś zamieścić komentarz, a nie odpowiedź
Fra
Przepraszam, że próbujesz pomóc, czy w ogóle przeczytałeś moją odpowiedź? Naprawdę musisz umieścić moje odpowiedzi obok twoich pytań.
Quisse,
Teraz zrobiłem to dla ciebie. Mam nadzieję, że możemy mieć konstruktywny dialog, aby rozwiązać pytanie.
Quisse,