Magento 2: Czy płaskie stoły to wciąż coś?

17

Czy w Magento 2 nadal musimy martwić się o płaskie stoły? Wiem, że istnieje interfejs, w którym możemy włączyć płaskie stoły, ale nie jestem pewien, jak dobrze zostały przetestowane i czy są jeszcze potrzebne.

Jeśli płaskie tablice nadal rzeczą - gdzie / kiedy atrybuty dla płaskich tabel są generowane i / lub regenerowane. Czy dzieje się tak tylko przy reindeksowaniu? A może inne działania interfejsu użytkownika mogą powodować generowanie płaskiego stołu? Czy to się dzieje php bin/magento setup:di:compile? Inne miejsca?

Ponadto - w jaki sposób Magento decyduje, czy atrybut ma być atrybutem płaskim? Czy wszystkie atrybuty EAV są spłaszczone? Czy są też inne, które mogą nie być?

Alan Storm
źródło

Odpowiedzi:

24

Tak, płaskie stoły to wciąż coś. Możesz włączyć płaskie tabele dla produktów i kategorii ze sklepów-> konfiguracja-> katalog-> witryna sklepowa. wprowadź opis zdjęcia tutaj

Dlaczego potrzebujemy płaskich stołów?

Oferują znaczny wzrost wydajności w przypadku dużych danych katalogowych. Jeden z naszych klientów ma tylko 5 kategorii i około 250 produktów, więc nie ma znaczenia, czy masz mieszkanie włączone czy wyłączone. To naprawdę miało znaczenie, kiedy uruchomiliśmy go dla innego sklepu, który miał 800 kategorii i 17000 produktów i 5 sklepów wielopoziomowych. Zwiększenie wydajności staje się widoczne, gdy zaczniesz zauważać, co dzieje się w bazie danych. Oto jak wygląda baza danych, gdy masz wiele witryn.

płaskie tabele produktów dla każdego sklepu

to samo dotyczy kategorii

Chodzi o to, że połączenia stają się bardzo kosztowne wraz ze wzrostem wielkości tabeli nawet przy indeksach. Płaskie stoły ZREDUKUJ (nie eliminuj) ŁĄCZENIA.

Kiedy są tworzone lub aktualizowane?

Płaskie stoły są regenerowane, gdy wykonasz pełny reindeks bin/magento indexer:reindex. Są one aktualizowane po aktualizacji produktu lub kategorii. Aktualizowane są tylko odpowiednie wiersze.

Płaskie tabele nie są generowane setup:di:compile

** Które atrybuty pasują do płaskich tabel? (i niektóre ograniczenia) **

Krótka odpowiedź to wszystkie atrybuty, które będą używane na liście produktów (lista + nawigacja warstwowa). Ustawienia frontowe magazynu atrybutów decydują, czy atrybut powinien być zawarty w płaskich tabelach

wprowadź opis zdjęcia tutaj

Wszystkie atrybuty nie są spłaszczone z powodu ograniczeń wymienionych poniżej.

Ograniczenia dotyczące płaskiego stołu

Wreszcie istnieje jedno ograniczenie dla tych płaskich tabel, które jest narzucone przez mysql. Tabela ma limity wielkości wierszy i kolumn. Możesz przeczytać więcej na ten temat na temat limitów tabel mysql

Ten <max_index_count>64</max_index_count>interesujący węzeł znajdziesz w config.xml modułu module.

Mam nadzieję, że to pomaga.

Abhishek Jakhotiya
źródło
2
co z płaskimi zamówieniami? Opcja składania zamówień płaskich nie jest dostępna obok kategorii i produktów
ahnbizcad
Czy można DROPustawić płaski stół, a następnie pozwolić mu tworzyć indexer:reindex? np. na wypadek awarii jednego ze stołów.
fritzmg
Zamówienia @ahnbizcad są już płaskie. tabela Sales_order.
vitoriodachef
2

Na podstawie dokumentacji magento dla płaskiego stołu wymienionej w https://docs.magento.com/m2/ce/user_guide/catalog/catalog-flat.html

Starting with Magento 2.3.0+, the use of a flat catalog is no longer a best practice and is not recommended. Continued use of this feature is known to cause performance degradation and other indexing issues

Sarjan Gautam
źródło
Wiele zapytań wymaga przepisania :(
Rustyjim
0

Płaskie stoły nie są już niczym. Nie dodaje żadnej poprawy wydajności i będzie przestarzałe w następnych wydaniach

bxN5
źródło