为什么以及何时使用“平面目录”?


24

在研究magento网站的速度问题时,我得到了一些链接,人们说可以使“平面目录”提高性能和速度。

问题在于,为什么默认情况下未启用它是速度问题。

会使“平面目录”产生一些不利影响吗?

我的magento网站上有100种产品和500种捆绑产品,由于我一次要加载36种产品,因此速度是一个很大的问题。

启用“平面目录”是否可以解决我的问题?

Answers:


35

EAV目录和平面目录之间的区别如下:

1. Eav目录

EAV是实体属性值数据库模型,其中数据完全采用规范化形式。每个列数据值都存储在它们各自的数据类型表中。例如,对于产品,

产品ID存储在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实现了索引器,该索引器将定期查询标准集合并以以下格式填充平面数据库表。*是商店ID。

catalog_category_flat_store_*
catalog_product_flat_*

这些表具有非标准化的产品和类别数据,这些数据仅供只读。这使Magento可以在单个查询中获取类别和产品数据。


您可以通过导航到来启用平面目录System > Configuration > Catalog > Frontend > Use Flat Catalog Category | Use Flat Catalog Product。设置为yes。

如果要在EAV表中为目录添加新属性。然后,不要忘记运行重新索引(System > Configuration > Index Management)。重新索引刷新您的平面目录表。

有关更多信息,请在Magento中检查“ EAV”和“平面目录”


好的1:我可以随时在Flat或Eav之间切换吗?2:也可以在使用平面时添加动态列吗?
mdeveloper

是的,您可以在它们之间切换。您还可以添加动态列。但要确保你增加新的属性,以EAV后运行重新索引
罗希特Kundale

@RohitKundale:为产品启用平面目录缺少许多属性,因此,我没有为产品显示许多功能。我也重新索引了。为什么在启用平面目录时所有属性都没有为动态列建立索引?
阿努拉格·坎德尔沃尔

2
@AnuragKhandelwal 检查此处
Rohit Kundale

当我开始使用magento时,这应该是他们向我展示的第一件事。
多米诺骨牌

5

Magento使用实体属性值(EAV)模型在其数据库中存储客户,产品和类别数据。尽管EAV模型使您可以为这些对象具有完全可扩展的属性,但是对象属性存储在多个表中,而不是一个非常大的表中。

由于属性存储在许多表中,并且包括一些相同属性的副本,因此SQL查询可能很长且很复杂。平面目录功能可动态创建新表,其中每一行包含有关产品或类别的所有必要数据。

在早期版本的Magento中,每次更改产品属性或产品类别关联时,都必须重建平面目录。在此版本中,固定目录会为您更新-每分钟或根据您的Magento cron工作进行更新。

统一目录选项不仅可以启用统一目录和统一产品索引器,而且还可以为目录和购物车价格规则建立索引。如果您有大量的SKU(500,000个或更多),那么如果启用了平面目录产品选项,Magento可以快速索引目录和购物车价格规则。


在此版本中,固定目录会为您更新-每分钟或根据您的Magento cron工作进行更新。您指的是哪个版本
mdeveloper

抱歉,我不明白您的意思
Arunendra '16

在您的选择中,您是否将当前版本称为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,因为我总是在批量(例如库存水平)更新后手动重建索引。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.