跨境电商
经验交流分享

Magento提速指南:Flat tables和Product Collection

我们都知道,Magento的产品、分类等环节都是用EAV数据库模型设计,Magento购物车之所以灵活,有很大一部分原因是EAV数据库巧妙实现。不过,在某些情况下,EAV数据库无法做到灵活与高效的完美结合。

Magento在设计之初,不仅提供了EAV的解决方案,同时在数据库中完美支持了Flat表结构。Flat Tables在表现形式上就和我们平常遇到的那种表结构基本一致了,举个例子来说就是一个产品对应一行数据。了解数据库的朋友们都应该清楚,相对于EAV的多表联查来说,单表单行数据的调用效率必定更高。

Magento产品表默认情况下使用EAV数据结构,通过后台,可以随时调整为Flat Tables。进入Magento后台,点击如下路径,如下图所示,

System -> Config -> Catalog and Frontend

启用Use Flat Catalog Product或者Use Flat Catalog Category即可将Product Collection或Category Collection读取数据库的表结构从EAV调整为Flat Tables,从而提高Magento加载数据的速度。从代码层面上来说,可以参考Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection类的_construct()构造方法。

很明显_init()方法会初始化该模型的资源模型,通过isEnabledFlat()方法,判断后台是否设置了通过Flat Tables表加载数据。

切换Flat Table以及EAV,在一定程度上可以提高Magento加载数据的速度。不过对于高度缓存化的Magento来说,大部分产品及分类从数据库中读取的情况都进行于缓存刷新、数据更改之后。

参考文章地址:http://inchoo.net/ecommerce/magento/flat-tables-in-magento-and-product-collection/

赞(0)
未经允许不得转载:锐想 » Magento提速指南:Flat tables和Product Collection
分享到: 更多 (0)

评论 4

评论前必须登录!

 

  1. #1

    大哥,你们的文章是抄袭的,图片都一样,截图也一样,至少要注明出处啊

    大家看看:http://inchoo.net/ecommerce/magento/flat-tables-in-magento-and-product-collection/

    阿杜6年前 (2013-04-11)
    • 抄袭?inchoo.net是中文站吗?这篇只是翻译过来罢了。不过确实翻译的文章应该留个链接。谢谢提醒~

      ruiwant6年前 (2013-04-11)
  2. #2

    你们不留地址,我第一次看,以为是你们原创的呢,让人误会了,虽然是翻译,但是不能摆脱嫌疑,其实你们做得挺好的。

    阿杜6年前 (2013-04-11)
    • 谢谢~基本都是原创,偶尔有些翻译,以后会加上来源链接~~

      ruiwant6年前 (2013-04-11)

锐想电商 - 跨境电商经验交流分享

锐想无限