DAG回填在SQL表上同时竞争插入和删除

  • 本文关键字:竞争 插入 删除 SQL DAG airflow
  • 更新时间 :
  • 英文 :


有没有办法限制某些任务的DAG回填,这样,如果运行中的一个任务正在向表写入,则另一个试图截断该表的任务必须等待?

我正在镜像到另一台服务器的数据库中大约有50个表。所有50张表的处理过程相同。DAGS之间的唯一区别是在服务器上暂存数据进行处理后调用的存储过程。为了节省大量工作,我选择创建一个DAG工厂,并以每个DAG同步都是不同的表和相应的存储过程的方式对其进行参数化。

我遇到的问题是,当我为一个表回填太多DAG运行时,我会遇到竞争条件,其中一个执行日期试图大容量插入到阶段表中,而另一个执行日试图截断同一个表,以便大容量插入阶段数据。池并不是一个真正的选择,因为我需要为每个表创建一个1的池,这似乎不是一个很好的主意,尤其是当我需要重新部署气流元数据数据库时。

您是否尝试为此DAG设置max_active_runs =1?文件参考。

对于每个DAG运行使用单独的临时表不是一个选项吗?这是一种常见的模式,为单个DAG运行创建资源,然后将其拆除。

最新更新