Magento 2: Les tables plates sont-elles toujours une chose?


17

Les tables plates sont-elles toujours une chose dont nous devons nous soucier dans Magento 2? Je sais qu'il y a une interface utilisateur où nous pouvons allumer les tables plates, mais je ne sais pas dans quelle mesure elles ont été testées, et si elles sont encore nécessaires.

Si les tables plates sont toujours une chose - où / quand les attributs des tables plates sont-ils générés et / ou régénérés. Cela se produit-il uniquement lors de la réindexation? Ou d'autres actions d'interface utilisateur peuvent-elles déclencher une génération de table plate? Cela se produit-il à php bin/magento setup:di:compile? D'autres lieux?

Aussi - comment Magento décide-t-il s'il doit faire d'un attribut un attribut plat? Tous les attributs EAV sont- ils aplatis? Ou y en a-t-il d'autres qui pourraient ne pas l'être?

Réponses:


24

Oui, les tables plates sont toujours une chose. Vous pouvez activer des tables plates pour les produits et catégories à partir des magasins-> configuration-> catalogue-> vitrine. entrez la description de l'image ici

Pourquoi avons-nous besoin de tables plates?

Ils offrent une amélioration significative des performances pour les données de catalogue volumineuses. Un de nos clients n'a que 5 catégories et environ 250 produits, peu importe que vous ayez ou non à plat. Cela a vraiment compté lorsque nous l'avons allumé pour un autre magasin qui comptait 800 catégories et 17 000 produits et 5 magasins multiples. L'amélioration des performances devient apparente lorsque vous commencez à remarquer ce qui se passe dans la base de données. Voici à quoi ressemble la base de données lorsque vous avez plusieurs sites Web.

tableaux de produits plats pour chaque magasin

même chose pour les catégories

Le point étant les jointures deviennent très coûteuses avec l'augmentation de la taille des tables même avec des index. Les tables plates RÉDUISENT (n'éliminent pas) les JOINTS.

Quand sont-ils créés ou mis à jour

Les tables plates sont régénérées lorsque vous effectuez une réindexation complète avec bin/magento indexer:reindex. Ils sont mis à jour lors de la mise à jour du produit ou de la catégorie. Seules les lignes pertinentes sont mises à jour.

Les tables plates ne sont pas générées sur setup:di:compile

** Quels attributs entrent dans les tables plates? (et certaines limitations) **

La réponse courte est tous les attributs qui vont être utilisés dans la liste des produits (liste + navigation en couches). Les paramètres d'une devanture de magasin d'attributs décident si l'attribut doit être inclus ou non dans les tableaux plats

entrez la description de l'image ici

Tous les attributs ne sont pas aplatis en raison des limitations que je mentionne ci-dessous.

Limitation de la table plate

Enfin, il y a une limitation pour ces tables plates qui est imposée par mysql. Il y a des limites de taille de ligne et de colonne sur la table. Vous pouvez en savoir plus à ce sujet sur les limites des tables mysql

Vous trouverez ce <max_index_count>64</max_index_count>nœud intéressant dans config.xml du module-catalogue.

J'espère que cela pourra aider.


2
qu'en est-il des commandes forfaitaires? L'option de faire des commandes forfaitaires n'est pas à côté de celles des catégories et des produits
ahnbizcad

Est-il possible de DROPcréer une table plate et de la laisser ensuite créer avec indexer:reindex? par exemple au cas où l'une des tables s'écraserait au-delà de toute réparation.
fritzmg

Les commandes @ahnbizcad sont déjà stables. table sales_order.
vitoriodachef


0

Les tables plates ne sont plus rien Il n'ajoute aucune amélioration de performances et serait déconseillé dans les prochaines versions

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.