Почему и когда использовать «Плоский каталог»?

24

В процессе изучения проблемы скорости на веб-сайте magento я получил несколько ссылок, где люди говорят, что «Плоский каталог» позволяет повысить производительность и скорость.

Проблема в том, что почему он не включен по умолчанию - это проблема скорости.

Включит ли «Плоский каталог» также какое-то негативное влияние

На моём magento веб-сайте было 100 продуктов и 500 связанных продуктов, и скорость довольно важна, так как я загружаю 36 продуктов одновременно.

Будет ли разрешение «Плоского каталога» решить мою проблему?

mdeveloper
источник

Ответы:

35

Разница между каталогом EAV и каталогом Flat заключается в следующем:

1. Eav Каталог

EAV - это модель базы данных значений атрибутов сущности, в которой данные полностью представлены в нормализованной форме. Значение каждого столбца хранится в соответствующей таблице типов данных. Пример для продукта

Идентификатор продукта хранится в catalog_product_entity_intтаблице,

название продукта в catalog_product_entity_varcharтаблице,

цена продукта в catalog_product_entity_decimalтаблице,

дата создания продукта в catalog_product_entity_datetimeтаблице,

Описание товара в catalog_product_entity_textтабл.

EAV сложен, так как объединяет 5-6 таблиц, даже если вы хотите получить информацию только об одном продукте.

Столбцы называются атрибутами в EAV.

2. Плоский каталог

Плоская модель использует только одну таблицу, поэтому она не нормализована и занимает больше места в базе данных. Это очищает EAV накладные расходы,

Это хорошо, когда дело доходит до производительности, так как для загрузки всего продукта требуется всего один запрос, а не для объединения 5-6 таблиц для получения сведений только об одном продукте.

Столбцы называются полями в плоской модели.

В Magento реализованы индексаторы, которые будут периодически запрашивать стандартные коллекции и заполнять простые таблицы базы данных в следующем формате. Где * это идентификатор магазина.

catalog_category_flat_store_*
catalog_product_flat_*

Эти таблицы содержат ненормализованные данные о товарах и категориях, предназначенные только для чтения. Это позволяет Magento получать данные о категориях и продуктах в одном запросе.


Вы можете включить плоский каталог, перейдя к System > Configuration > Catalog > Frontend > Use Flat Catalog Category | Use Flat Catalog Product. Установите это на да.

Если вы добавляете новый атрибут в таблицу EAV для каталога. Тогда не забудьте запустить переиндексацию (System > Configuration > Index Management). Переиндексация обновляет таблицы каталога.

Для получения дополнительной информации, пожалуйста, проверьте «EAV» и «Плоский каталог» в Magento

Рохит Кундейл
источник
ок 1: могу ли я в любое время переключаться между плоским на eav и eav на плоский? 2: можно ли добавлять динамические столбцы при использовании flat?
mdeveloper
Да, вы можете переключаться между ними. Вы также можете добавить динамические столбцы. Но убедитесь, что вы запустили переиндексацию после добавления нового атрибута в EAV
Rohit Kundale
@RohitKundale: при включении плоского каталога для продукта отсутствуют многие атрибуты, и в результате у меня не отображается много функций, отображаемых для продуктов. Я также переиндексировал. Почему все атрибуты не индексируются для динамических столбцов при включении плоского каталога?
Анураг Хандельвал
2
@AnuragKhandelwal Проверьте здесь
Rohit Kundale
Это должно было быть первым, что они показали мне, когда я начал использовать magento.
Домино
5

Magento использует модель Entity-Attribute-Value (EAV) для хранения данных о клиентах, продуктах и ​​категориях в своей базе данных. Хотя модель EAV позволяет вам иметь полностью расширяемые атрибуты для этих объектов, атрибуты объекта хранятся в нескольких таблицах, а не в одной очень большой таблице.

Поскольку атрибуты хранятся во многих таблицах, включая копии одних и тех же атрибутов, запросы SQL могут быть длинными и сложными. Функция плоского каталога создает новые таблицы на лету, где каждая строка содержит все необходимые данные о продукте или категории.

В более ранних версиях Magento необходимо было перестраивать плоский каталог каждый раз, когда вы вносили изменения в атрибуты продукта или ассоциации с категориями продуктов. В этом выпуске плоский каталог обновляется для вас - каждую минуту или в соответствии с вашей работой в Magento cron.

Опции плоского каталога не только включают индексаторы плоского каталога и плоского продукта, но также включают индексацию для правил каталога и цены корзины покупок. Если у вас есть большое количество SKU (500 000 и более), Magento может быстро проиндексировать правила цен каталога и корзины покупок, если вы включите опцию продукта плоского каталога.

Arunendra
источник
В этом выпуске плоский каталог обновляется для вас - каждую минуту или в соответствии с вашей работой в Magento cron. какую версию вы имеете в виду
mdeveloper
Извините, я не понимаю, о чем вы
говорите
в вашем варианте вы называли текущую версию 1.9. или magento 2
разработчик
1
Это зависит от вас, какая версия подходит для вас. Magento 2 имеет больше преимуществ.
Арундра
1
@Arunendra mdeveloper спрашивает, на какую версию Magento вы ссылаетесь, когда говорите: «В этом выпуске плоский каталог обновлен для вас». О каком выпуске вы говорите? Magento 1.9 обновляет его для нас? Это только в Magento 2? В какой версии Magento это начало обновляться для нас?
Оливье
1

Плоские категории не обновляются автоматически даже в Magento 1.9.2. Я не проверял 1.9.3, так как я всегда перестраивал индексы вручную после массовых обновлений (например, на уровне запасов).

Стив Холдовей
источник