我们是不是可以检查 bigquery 中的表是不是处于锁定状态或正在执行 DML 操作

Posted

技术标签:

【中文标题】我们是不是可以检查 bigquery 中的表是不是处于锁定状态或正在执行 DML 操作【英文标题】:Can we check if table in bigquery is in locked or DML operation is being performed我们是否可以检查 bigquery 中的表是否处于锁定状态或正在执行 DML 操作 【发布时间】:2019-05-21 17:02:46 【问题描述】:

有一个 BQ 表,其中安排了多个数据加载/更新/删除作业。由于这是自动作业,因此其中许多由于并发更新问题而失败。 我需要知道我们是否在 BigQuery 中有一项规定来检查表是否已被 DML 操作锁定,我们是否可以对查询进行序列化以便没有作业失败

【问题讨论】:

您能否解释一下是谁在生成错误消息并提供 excat 错误本身。还添加更多详细信息如何触发自动 使用气流自动更新、删除和插入查询。它抛出以下错误:- 由于并发更新,无法序列化对表 my_table 的访问。 【参考方案1】:

您可以使用客户端代码生成的作业 ID 来跟踪作业状态,并仅在该作业完成后开始下一个查询。 This 和 this 描述了该过程。

或者,您可以尝试exponential backoff 重试查询一定次数,以防止由于锁定表而导致查询自动失败。

【讨论】:

以上是关于我们是不是可以检查 bigquery 中的表是不是处于锁定状态或正在执行 DML 操作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python BigQuery API 追加到 BigQuery 中的表

是否有元数据表来检查 BigQuery 中的表是否已分区?

如何检查 BigQuery 中是不是存在数据集?

检查列表字符串 BigQuery 中的元素是不是

检查mysql中的表中是不是有两行具有相同的元素

BigQuery 中是不是有与标准 SQL 等效的表通配符函数?