我看到使用Doctrine :: getTable()并使用它运行查询的奇怪行为。
在某些情况下几乎没有开销,而在其他情况下,首次调用Doctrine :: getTable()时会有200 + ms的开销(尽管对后续调用同一个表的开销很小)。
这个动作就像这样。
一个。调用DoctrineTable
来运行查询(有问题的表用于生成操作模块文件),table A
几乎没有开销
湾表格已保存
C。调用DoctrineTable
来对不相关的表(table B
)运行查询,并且具有相当大的开销(200 + ms)
d。在另一个表(DoctrineTable
)上调用table C
来运行另一个查询,几乎没有开销
我已尝试删除步骤c中DoctrineTable
查询的操作以查看它是否是一般加载问题,但步骤d中的查询仍然以很少或没有开销运行。我直接在操作中使用Doctrine_Query
运行查询,看看是否有所不同,速度影响仍然存在。
问题表上的查询是什么并不重要,存在相同的开销/性能损失。
与慢表(table B
)的唯一区别在于它具有可版本化的行为,而其他表(table A
和table C
则没有)。这可能会影响初始查询的速度(一旦完成第一个查询,对该表的后续查询就会很快)?
答案 0 :(得分:0)
因此,经过更多的挖掘和测试,我可以确认表上的Versionable行为会增加在该表上运行查询(和插入)时的开销。