首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shopware 6如何提高后台订单搜索的性能?

Shopware 6如何提高后台订单搜索的性能?
EN

Stack Overflow用户
提问于 2022-06-01 10:43:05
回答 1查看 92关注 0票数 1

我正在使用Shopware 6.4.6.1

我有3英里左右。数据库中的订单和客户。

当我使用后端搜索特定的订单号时,系统会对数据库启动一个非常复杂的查询,这个查询太慢,无法及时响应,因此我得到了一个超时。这样,就不可能使用后端查找订单。数据库对查询中使用的表没有任何索引,这一点我觉得很奇怪。

据我所知,elasticsearch集群仅用于产品、类别等,而不是查找订单和客户。

在SW6中,以一种性能良好的方式查找特定的订单/客户,并与数百万个订单/客户一起工作的一般概念是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 13:17:59

这里没有密码,只是一个一般的答案。

最好的解决方案是建立一个Elasticsearch集群(或者完成ELK堆栈)。为此您将需要一个自定义索引器(用于告诉Shopware您希望在弹性中使用哪些字段),并用如下所示来装饰/扩展核心ApiControllers的search()方法:

代码语言:javascript
复制
if (in_array($entityName,['order','customer'])) {
  $context->addState(Context::STATE_ELASTICSEARCH_AWARE);
}

我们对Shopware 6进行了自定义扩展,并在Elsaticsearch中添加了客户和订单数据,因此这使得搜索非常快捷。就像SW6中的产品搜索一样。

一个不太有希望的解决方案是向MySQL添加适当的DB索引。这使我的订单搜索速度加快了30%-40%。我无法理解为什么Shopware在最初没有索引的情况下发布了它的DB,也许它与在写时重新构建索引的必要性有关,这消耗了相当多的内存。不知道。我们应该检查所有涉及的表的索引。

总的来说,我认为他们在所有后端搜索中都做得很糟糕,使得其中的很多都无法使用,特别是当你有大量数据的时候。可能是SW6最令人失望的事.

在我们的旧的,前SW6平台,我们有严重的性能问题,因为巨大的表,也。在那里,解决方案是向DB中添加一个附加的order_lookup表,其中只有极小的列集(大部分是串连字符串,并且只有真正搜索到客户支持的字段)。该表优化了索引,每次添加或编辑新的顺序时,都会使用MySQL触发器写入数据。在后端,一个定制的搜索页面查询order_lookup表。如果Elasticsearch不适合您,您可以在SW6中做类似的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72460468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档