# 32.2.什么时候开始准时制?

JIT编译主要有利于长时间运行的CPU限制查询。这些通常是分析性查询。简而言之,执行JIT编译所增加的开销通常会高于它所能节省的时间。

为了确定是否应该使用JIT编译,查询的总估计成本(请参阅第72章第20.7.2节)被使用了。查询的估计成本将与准时制_在上面_费用.如果成本较高,将执行JIT编译。接下来还需要两个决定。首先,如果估计成本高于准时制_内联_在上面_费用,查询中使用的短函数和运算符将被内联。第二,如果估计成本高于设定的准时制_优化_在上面_费用,昂贵的优化被用于改进生成的代码。这些选项中的每一个都会增加JIT编译开销,但可以显著减少查询执行时间。

这些基于成本的决策将在计划时间而不是执行时间做出。这意味着在使用准备好的语句时,使用通用计划(参见准备),在准备时有效的配置参数值控制决策,而不是执行时的设置。

# 笔记

如果准时制即将,或者如果没有可用的JIT实现(例如,因为编译服务器时没有--与llvm),即使基于上述标准,JIT是有益的,也不会执行。背景准时制在计划和执行时都有影响。

解释可以用来查看是否使用了JIT。例如,下面是一个不使用JIT的查询:

=# EXPLAIN ANALYZE SELECT SUM(relpages) FROM pg_class;
                                                 QUERY PLAN