Bigquery DML操作

时间:2020-11-04 09:15:34

标签: google-cloud-platform google-bigquery

我试图在一个分区表上执行5个并发更新查询。 0f 5,3来自同一分区,2来自不同分区。在执行时,我希望3个查询之一将保持待处理状态(2个正在运行+ 1个待处理),而其他2个将处于运行状态,因为它们属于不同的分区。但是我观察到来自同一分区的2个查询处于运行状态,其余3个处于待处理状态。

如果所有查询都属于同一个表,而与分区无关,那么好像同时有2个查询可以处于运行状态,其余查询处于挂起状态(排队)?

1 个答案:

答案 0 :(得分:0)

有关使用DML更新分区表数据的所有信息,请参见here

此外,请查看DML中的limitations and concurrent jobs。如果您在一个表上提交一个或多个变异DML语句,而该表上的其他变异DML作业仍在运行(或挂起),则BigQuery会并发运行它们,最多可以有固定数量的并发变异DML语句。如果达到并发限制,则BigQuery会自动将处于“挂起”状态的所有其他变异DML作业排队。

DML有一些语句冲突:

在表上同时运行变异DML语句可能会由于失败 在他们所做的更改中发生冲突。 BigQuery重试这些 失败。

在表中插入行的INSERT DML语句不冲突 与任何其他同时运行的DML语句。

仅包含INSERT子句而没有UPDATE的MERGE DML语句 或DELETE子句不与任何其他同时运行的冲突 DML声明。

带有UPDATE或DELETE子句的MERGE DML语句不与 只要合并,任何其他同时运行的DML语句 语句不会导致更新或删除现有行。