【问题标题】:Doctrine queries take over 4 seconds to executeDoctrine 查询需要 4 秒以上才能执行
【发布时间】:2009-08-13 11:29:20
【问题描述】:

我们正处于项目的最后阶段并开始对其进行优化。

经过几次测试,我们意识到加载页面的大部分(如果不是全部)时间都花在了 Doctrine 上。

在 5 秒的页面加载中,3 - 4 秒仅用于 2 个 Doctrine 查询。

我们已经在 mysql 服务器和 Doctrine 以及结果缓存上启用了查询缓存,但这似乎只会让加载时间变得更糟。

据我所知,mysql 查询缓存处于活动状态:

[edit] 由于某种原因,我的其余问题已经消失,所以我再次发布它[/edit]

Qcache_free_blocks | 57
Qcache_free_memory | 22300072
Qcache_hits | 7117
Qcache_inserts | 3308
Qcache_lowmem_prunes | 0
Qcache_not_cached | 4537
Qcache_queries_in_cache | 1225
Qcache_total_blocks |第2609章

问题是缓存似乎没有被命中,占用大部分时间(平均 3 秒)的查询永远不会改变。

是否有人对为什么启用查询/结果缓存不会缩短加载时间有任何提示?

【问题讨论】:

    标签: caching doctrine query-cache


    【解决方案1】:

    如果我没记错的话,您目前没有最慢查询的列表。我建议从这里开始。

    Turn on slow query logging:

    log_slow_queries=/var/log/mysql.slow.log
    

    然后:

    尽可能约束关系

    尽可能限制关系很重要。这意味着:

    • 施加遍历方向(尽可能避免双向关联)
    • 消除不必要的关联

    这有几个好处:

    • 减少域模型中的耦合
    • 域模型中的代码更简单(无需正确维护双向性)
    • 为 Doctrine 做更少的工作

    盗自Doctrine best practices

    【讨论】:

      【解决方案2】:

      您是否尝试过从控制台/命令行查询? 在没有 ORM 的情况下执行时,他们需要什么时间会很有趣。

      请告诉我,我对使用 Doctrine 很感兴趣,但有点害怕性能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 1970-01-01
        • 1970-01-01
        • 2018-02-13
        • 2018-07-06
        相关资源
        最近更新 更多