Magento 2: Плоские столы Все еще существуют?
Являются ли плоские таблицы все еще тем, о чем нам нужно беспокоиться в Magento 2? Я знаю, что есть пользовательский интерфейс, в котором мы можем включить плоские таблицы, но я не уверен, насколько хорошо они были протестированы и нужны ли они вообще.
Если плоские таблицы все еще являются - где/когда создаются и/или восстанавливаются атрибуты для плоских таблиц. Происходит ли это только при переиндексации? Или другие действия пользовательского интерфейса могут вызвать генерацию плоской таблицы? Происходит ли это в php bin/magento setup:di:compile
? Другие места?
Также - как Magento решает, нужно ли делать атрибут плоским атрибутом? Являются ли все атрибуты EAV сглаженными? Или есть другие, которых может и не быть?
3 answers
Да, плоские столы - это все еще вещь. Вы можете включить плоские таблицы для товаров и категорий в магазинах ->конфигурация ->каталог ->витрина магазина.
Зачем нам нужны плоские столы?
Они действительно обеспечивают значительное повышение производительности для больших данных каталога. У одного из наших клиентов всего 5 категорий и около 250 продуктов, так что на самом деле не имеет значения, есть у вас квартира или нет. Это действительно имело значение, когда мы включили его для другого магазина, в котором было 800 категории и 17000 товаров и 5 магазинов. Повышение производительности становится очевидным, когда вы начинаете замечать, что происходит в базе данных. Вот как выглядит база данных, когда у вас несколько веб-сайтов.
Суть в том, что соединения становятся очень дорогими с увеличением размера таблицы даже с индексами. Плоские таблицы УМЕНЬШАЮТ (но не устраняют) соединения.
Когда они создаются или обновляются
Плоские таблицы являются восстанавливается при полной переиндексации с помощью bin/magento indexer:reindex
. Они обновляются при обновлении продукта или категории. Обновляются только соответствующие строки.
Плоские таблицы не создаются на setup:di:compile
**Какие атрибуты входят в плоские таблицы? (и некоторые ограничения) **
Краткий ответ - это все атрибуты, которые будут использоваться в списке продуктов (список + многоуровневая навигация). Параметры интерфейса хранилища атрибутов определяют, следует ли включать атрибут в плоский таблицы
Все атрибуты не сглажены из-за ограничений, о которых я упоминаю ниже.
Ограничение плоского стола
Наконец, есть одно ограничение для этих плоских таблиц, которое накладывается mysql. В таблице существуют ограничения на размер строк и столбцов. Вы можете прочитать больше об этом на ограничения таблицы mysql
Вы найдете этот <max_index_count>64</max_index_count>
интересный узел в config.xml из модуля-каталога.
Надеюсь, это поможет.
На основе документации magento для плоской таблицы, упомянутой в 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
Плоские столы больше не вещь Он не добавляет никаких улучшений производительности и будет признан устаревшим в следующих выпусках