出于演示目的,假设我有一个名为 constructor(private route: ActivatedRoute){}
ngOnInit(){
this.route.params.subscribe(param => {
let id = param["id"];
/// reload grid and charts...
})
}
的类,其方法名为DemoThing
。
有没有办法(在代码中)我可以检查do_something
点击数据库的次数?有没有办法可以“监视”活动记录以计算数据库被调用的次数?
例如:
do_something
答案 0 :(得分:0)
ActiveRecord应该在STDOUT中记录每个查询。
但是对于上面的代码,很明显你为i
的每次迭代进行了5次调用。
通过不将Ruby逻辑与查询混合,可以提高查询效率。
在此示例中,在查询之前获取ID将意味着不会为每个Ruby循环调用查询。
ids = 5.times.to_a
retVal = MyActiveRecordModel.where(id: ids) # .to_a if retVal needs to be an Array
答案 1 :(得分:0)
当然可以。但首先你必须了解Rails'查询缓存和记录器。默认情况下,Rails将尝试通过打开简单的查询缓存来优化性能。它是存储在当前线程上的哈希值(每个活动数据库连接一个 - 大多数rails进程只有一个)。无论何时生成select语句(如find或where等),相应的结果集都存储在一个散列中,该散列中包含用于查询它们作为键的SQL。当您运行上述方法时,您会注意到日志将显示Model Load
语句,然后显示CACHE
语句。您的数据库只被查询一次,其他4个通过缓存加载。在运行该查询时,请查看服务器日志。
答案 2 :(得分:-1)