Kiedy powinienem użyć opcji płaskiego stołu kategorii?

16

W odpowiedzi na poprzednie pytanie chciałbym wiedzieć:

Kiedy powinienem użyć opcji płaskiego stołu kategorii?

Podczas wyszukiwania w Google znalazłem wskazówkę, aby włączyć tę funkcję, „ gdy masz bardzo wiele kategorii ”. Ale co jest dużo ?

Z łatwością rozumiem, że aktywacja płaskich stolików dla produktów jest dobrą decyzją pod względem wydajności, ale czy naprawdę jest tak samo ważna w przypadku katalogów?

A jakie wnioski z tego wynikają? Właśnie dowiedziałem się, że włączenie płaskich tabel kategorii prowadzi do niemożności zapisania pozycji produktów kategorii. Przynajmniej nie tak łatwe, jak bez opcji płaskiej (dziękuję Mariusowi za pomoc). Czy są jakieś inne wymowne rzeczy?

Z góry dziękuję :)

Celldweller
źródło

Odpowiedzi:

10

Jeśli masz zainstalowany PHPMyAdmin na swoim serwerze, możesz rzucić okiem na tabele Magento. Przekonasz się, że wiele zaczyna się od catalog_product_...i catalog_category_....

Wszystkie są używane dla każdego produktu i kategorii, co oznacza wiele skomplikowanych i ciężkich zapytań dla każdej strony, do której dzwonisz.

Aby zmniejszyć obciążenie MySQL i przyspieszyć swój sklep, Magento oferuje płaskie stoły. Na przykład catalog_product_flat_1. Jeśli spojrzysz na strukturę tej tabeli, zobaczysz, że zawiera ona wiele podstawowych danych produktu, co oznacza, że ​​na przykład na liście produktów kategorii należy wykonać tylko jedno zapytanie do tej tabeli zamiast zapytania o wiele innych tabel zawierających dane atrybutów.

Dane te są jednak agregowane na podstawie danych z innych tabel, co oznacza, że ​​za każdym razem, gdy zapisujesz produkt, kilka indexes( System > Configuration > Index Management) jest odświeżanych w celu skompilowania danych produktu. W niektórych przypadkach, na przykład podczas opracowywania, może to być niepotrzebne. Chcesz natychmiast zobaczyć wszystkie zmiany, nawet jeśli czas ładowania strony może trochę potrwać.

Podsumowując, za każdym razem, gdy otworzysz sklep publicznie, włącz je, a podczas programowania staraj się nie używać pełnych produktów lub katalogów, ale zamiast tego użyj danych dostarczonych przez płaskie indeksy.

Sander Mangel
źródło
Myślę, że zawsze aktywowałbym płaskie tabele produktów w produktywnym środowisku. Nie byłem jednak pewien co do tabel kategorii płaskich. Więc mówisz, że zawsze aktywowałbyś oba? Niezależnie od tego, ile masz katalogów?
Celldweller,
Zawsze je aktywuj, im więcej kategorii, tym większa korzyść oczywiście, ale nawet jeśli masz tylko 10 kategorii, nadal zachowasz kilka zapytań.
Sander Mangel
4
Zawsze należy aktywować płaskie elementy katalogu, ale teoretycznie zdarza się, że nie działa. Dzieje się tak, gdy masz wiele atrybutów używanych na liście produktów i przekroczysz maksymalny limit wierszy mysql. Widziałem to tylko raz. Nie musisz się bardzo martwić, ale na wypadek, gdyby tak się stało, będziesz wiedział, dlaczego.
Marius
@Celldweller, czy możemy podać więcej informacji na twoje pytanie?
Sander Mangel
0

Jeśli masz wiele kategorii lub wiele niestandardowych atrybutów dla kategorii, jest to dobry wybór, ponieważ zmniejsza złożoność zapytań. Należy pamiętać, że duże obciążenie przynosi jeszcze więcej korzyści. Główną wadą jest to, że kategorie i płaskie_kategorie używają zupełnie innego interfejsu, więc często kod musi być bardzo ostrożny w przypadku włączonych kategorii płaskich.

Nils Preuß
źródło
Oto znowu. Dużo i wiele. ;-) Więc powiedziałbyś także „zależy od”? Czy aktywowałbyś tabele kategorii płaskich, gdy masz 10 katalogów? Lub 50? Czy można w ogóle narysować linię?
Celldweller,
Musisz wiedzieć, jakie są przypadki z niektórymi przykładami zmian kodu, które należy uwzględnić podczas włączania płaskiego katalogu.
Anurag Khandelwal,