分类页面无法使用Magento 2且产品超过1300万种

时间:2019-04-25 12:33:59

标签: mysql performance magento magento2

我陷入了一个问题,Magento 2拥有超过1300万种产品。尽管速度很慢,但我们已经成功上传了1300万种产品,并且可以像建立索引,产品页面和搜索页面一样工作。 enter image description here

等待近2分钟的内存耗尽后,我的前端类别页面现在无法打开,我们尝试分配18GB的内存,但是它卡在了此查询中,并通过了错误的内存耗尽。

SELECT  1 AS status, e.entity_id, e.attribute_set_id, e.type_id,
        e.created_at, e.updated_at, e.sku,
        cat_index.position AS cat_index_position,
        stock_status_index.stock_status AS is_salable
    FROM  catalog_product_flat_1 AS e
    INNER JOIN  catalog_category_product_index_store1 AS cat_index
           ON cat_index.product_id=e.entity_id
      AND  cat_index.store_id=1
      AND  cat_index.category_id='4'
    INNER JOIN  cataloginventory_stock_status AS stock_status_index
           ON e.entity_id = stock_status_index.product_id
      AND  stock_status_index.website_id = 0
      AND  stock_status_index.stock_id = 1
    WHERE  (stock_status_index.stock_status = 1)

任何人都可以建议我如何解决该问题或加快流程,MySQL询问我应该进行哪些体系结构级别更改以使其在前端的类别列表页面上起作用。我知道这是海量数据,但是拥有这么多产品是我们的要求。我们有一个很好的服务器

  • 英特尔至强E5-2689v4
  • 128 GB RAM
  • 1200 GB数据存储

    我已经启用了平面目录产品和平面目录类别。

1 个答案:

答案 0 :(得分:0)

添加这些复合索引:

stock_status_index:  (stock_status, website_id, stock_id, product_id)
e:  (entity_id)  -- unless that is the PRIMARY KEY
cat_index:  (product_id, store_id, category_id)

如果这些帮助还不够,请提供EXPLAIN SELECT ...SHOW CREATE TABLE

更多索引技巧:http://mysql.rjweb.org/doc.php/index_cookbook_mysql