首页 > 解决方案 > 生产环境中的查询过多

问题描述

在开发环境中有 16 个数据库查询(在我的存储库中使用教义 2.6 和仅 dql 查询)。不知何故,在生产中,完全相同的页面显示了 101 个查询 - 因为查询了所有关系,甚至大部分关系都没有使用。我尝试过不同的获取模式,比如 EAGER,但它没有改变任何东西。

这是一个被查询但从未在页面上使用的示例注释:

/**
 * @var Doctrine\Common\Collections\Collection
 *
 * @Assert\Valid(traverse=true)
 * @ORM\OneToMany(targetEntity="Translation", mappedBy="origin", cascade={"persist", "remove"}, orphanRemoval=true, fetch="EAGER")
 * @ORM\OrderBy({"locale"="ASC"})
 */
private $translations;

会不会是某种配置错误?

标签: doctrine-ormdoctrine

解决方案


解决了它 - 根本原因是 apcu。当我从:

doctrine:
    orm:
        metadata_cache_driver: apcu
        query_cache_driver: apcu
        result_cache_driver: apcu

doctrine:
    orm:
        metadata_cache_driver: apc
        query_cache_driver: apc
        result_cache_driver: apc

我收到了 9 个请求,而不是 16 个(开发)和 101 个(通过 apcu 的产品)。也许这是模块的一些服务器端问题。


推荐阅读