跳转至

使用线程

当 DBT 运行时,它会创建模型之间链接的有向无环图 (DAG)。线程数代表 DBT 可以同时处理的图路径的最大数量,增加线程数可以最大限度地减少项目的运行时间。

例如,如果指定 threads: 1,DBT 将开始仅构建一个模型,并完成它,然后再转到下一个模型。当指定 threads: 8 意味着 DBT 将同时处理最多 8 个模型,此过程并不会违反依赖关系(DBT 会根据依赖关系图确定可以处理的模型数量可以处理的实际模型数量可能会受到依赖关系图中可用路径的限制)。

DBT 并没有最大的线程数限制,但增加线程数通常会减少执行时间,也有很多事情需要考虑:

  • 增加线程数会增加数据仓库的负载,这可能会影响数据堆栈中的其他工具。例如,如果 BI 工具使用与 DBT 相同的计算资源,则它们的查询可能会在 DBT 运行期间排队。
  • 数据库允许运行的并发查询数量可能是可以主动构建多少模型的限制因素,某些模型可能会在等待可用查询槽时排队。

通常,最佳线程数取决于数据仓库及其配置,最好测试不同的值来找到适合项目的最佳线程数,我们建议一开始将其设置为 4。

通常,可以在执行 dbt 命令时使用 --threads 选项来使用与目标中定义的值不同的线程数。也可以在 profile.yml 文件(仅适用于 DBT Core 用户)中定义线程数(DBT Cloud 设置作业定义需要在配置文件下提供 dbt Cloud 开发凭证)。