问题排查简介
本文档简要介绍了可用于帮助您排查 BigQuery 问题的诊断工具、遥测接口和文档资源。
当您遇到查询失败、性能瓶颈、权限错误、配额限制或数据注入问题时,BigQuery 会提供内置工具来帮助您快速找出根本原因并解决问题。
排查工作流问题
如需有效排查 BigQuery 中的问题,请考虑以下诊断标准:
- 确定症状和故障模式。查看任务的结果,确定问题是严重故障(例如错误代码或作业失败)、性能下降(例如查询缓慢或出现 slot 饥饿)、权限被拒,还是费用意外不一致。
- 检查作业执行详情。您可以使用 Google Cloud 控制台作业探索器、查询执行图或命令行工具来检查阶段级时间安排、slot 分配和错误详情。您还可以让 Gemini Cloud Assist 调查您的问题。
- 分析遥测数据和元数据。查询信息架构视图或检查 Cloud Audit Logs,以将作业行为与资源争用、预留限制或管理变更相关联。
- 应用有针对性的缓解措施。请使用特定于类别的问题排查指南或防御性 SQL 函数来解决根本原因。
区分问题排查和优化
使用 BigQuery 时,请务必区分问题排查、性能优化和最佳实践:
- 问题排查。重点在于诊断和解决意外失败、运行时错误、管道中断、配额耗尽或导致作业无法成功完成的意外行为。
- 性能优化。侧重于提高已成功运行的查询和工作负载的执行速度、缩短延迟时间或提高资源效率。如需了解详情,请参阅优化查询性能。
- 最佳实践。侧重于数据建模、存储、安全和成本管理的架构和设计模式。如需了解详情,请参阅最佳实践简介。
诊断工具
以下部分介绍了多种 BigQuery 界面和自动化工具,可帮助您诊断工作负载中的问题。
可视化工具和控制台工具
以下工具可帮助您在Google Cloud 控制台中排查 BigQuery 问题。
- 作业探索器。无需编写 SQL 查询,即可搜索、过滤和检查项目或组织中的历史作业和正在运行的作业。 您可以查看错误消息、槽使用情况、执行时间轴和作业元数据。 如需了解详情,请参阅在作业浏览器中监控作业。
- 查询执行图。检查查询的直观分阶段执行计划。执行图可帮助您识别瓶颈,例如 shuffle 溢出到磁盘、计算密集型阶段、数据倾斜或输入/输出延迟。如需了解详情,请参阅获取查询性能数据分析。
- “Query Insights”和资源图表。查看槽利用率、作业并发和预留分配的实时图表和历史图表,以诊断容量限制。如需了解详情,请参阅使用管理资源图表。
- BigQuery 中的 Gemini Cloud Assist。获取有关失败查询和性能瓶颈的上下文相关 AI 辅助分析。 Gemini Cloud Assist 会直接在Google Cloud 控制台中解释错误代码、突出显示有问题的 SQL 语法,并建议补救措施。如需了解详情,请参阅使用 Gemini Cloud Assist 排查查询问题。
命令行和自动化诊断工具
以下工具可帮助您通过命令行界面诊断 BigQuery 问题。
- bq 命令行工具。使用
bq show -j <var>JOB_ID</var>命令或向查询命令添加--format=prettyjson标志,检查详细的错误结构、请求 ID 和作业元数据。如需了解详情,请参阅排查 CLI 命令问题。 gcpdiag工具。从命令行运行自动化诊断程序,以检测常见的 Google Cloud 配置问题,包括 IAM 权限缺口、网络限制和服务账号错误。如需了解详情,请参阅使用gcpdiag排查查询失败问题。
元数据和遥测视图
通过信息架构视图,您可以使用标准 SQL 查询有关作业、容量、流式注入和数据集的实时和历史元数据。这些视图包括:
- 作业执行遥测。查询
INFORMATION_SCHEMA.JOBS和INFORMATION_SCHEMA.JOBS_TIMELINE,以分析作业的槽毫秒消耗量、溢出字节数、排队时间和错误代码。 - 预订和容量。查询
INFORMATION_SCHEMA.RESERVATIONS和INFORMATION_SCHEMA.CAPACITY_COMMITMENTS,以诊断槽分配、预留限制和自动扩缩行为。 - 流式传输和注入。用于识别提取延迟时间和流式传输速率限制的查询
INFORMATION_SCHEMA.STREAMING_TIMELINE。 - 存储空间和分区状况。查询
INFORMATION_SCHEMA.TABLE_STORAGE可检查物理表大小、活跃存储空间与长期存储空间,以及分区分布。
如需了解详情,请参阅 BigQuery INFORMATION_SCHEMA 简介。
Cloud Monitoring 和 Cloud Audit Logs
- Cloud Audit Logs。查看管理员活动审核日志和数据访问审核日志,以跟踪特定操作的发起者、检查调用方身份并诊断
PERMISSION_DENIED错误。如需了解详情,请参阅 BigQuery 审核日志记录参考文档。 - Cloud Monitoring。跟踪槽使用情况、查询执行时长和上传的字节数等指标,并配置提醒政策,以便在超出阈值或配额时通知您的团队。如需了解详情,请参阅使用 Cloud Monitoring 监控 BigQuery。
防御性 SQL 函数和调试语句
为防止查询因运行时数据错误而意外失败,请使用以下方法:
- 安全表达式。使用
SAFE_CAST()、SAFE_DIVIDE()、SAFE_OFFSET()和SAFE_ORDINAL()可返回NULL,而不是在数据类型或数组边界不匹配时生成运行时错误。大多数标量函数都支持SAFE.前缀。如需了解详情,请参阅调试函数和SAFE.前缀。 - SQL 断言。在多语句事务或脚本中使用
ASSERT语句,以强制执行数据验证条件,并在下游操作执行之前因自定义错误消息而失败。如需了解详情,请参阅调试语句。
按问题类别排查问题
从以下部分中选择一个类别,查看详细的错误代码、根本原因和分步问题解决指南。
查询性能和执行
诊断无法运行、超时、遇到资源限制或出现意外延迟的查询。
- 排查有关搜索查询的问题。解决
resourcesExceeded错误、查询执行缓慢、Shuffle 溢出、内存不足情况和计划查询失败问题。 - 排查查询队列时间过长的问题。 诊断因交互式队列或批量队列限制而导致并发瓶颈和查询排队的问题。
- 错误消息参考信息。查找特定的 HTTP 错误代码、错误原因字符串和建议的操作。
Identity and Access Management (IAM) 和安全性
诊断访问权限控制失败、角色分配缺失和数据治理政策阻止问题。
- 排查 BigQuery 中的 IAM 权限问题。 诊断“权限遭拒”错误、授予缺少的 IAM 角色,以及使用政策问题排查工具。
- 排查 VPC Service Controls 问题。 识别并解决边界违规行为以及入站流量或出站流量规则阻止问题。
- 排查行级和列级安全性问题。 解决与数据政策、政策标记和行访问权限过滤条件相关的访问权限问题。
配额、速率限制和预留
解决工作负载超出 BigQuery 服务限制或容量分配时出现的问题。
- 排查配额和限制错误。 了解可调整配额与不可调整配额、处理并发查询限制,以及解决 API 速率限制错误。
- 排查与预留相关的问题。 诊断槽饥饿、预留分配不匹配和基准容量不足问题。
数据注入、流式传输和转移
诊断加载数据、流式传输记录或同步外部来源时出现的故障。
- 排查转移作业配置问题。 解决 Amazon S3、Salesforce、Google Ads 和 Cloud Storage 等来源的 BigQuery Data Transfer Service 错误。
- 排查流式插入问题。 调试 Storage Write API 和旧版流式注入失败、行级插入错误以及吞吐量配额。
- 排查数据加载问题。 解决 CSV、JSON、Parquet 或 Avro 架构解析和分隔符错误。
外部数据源和联合查询
诊断查询 BigQuery 外部数据时的连接、身份验证和执行错误。
- 排查 Cloud SQL 联合查询问题。 解决连接超时、实例配置问题和凭据失败问题。
结算和费用差异
调查计算和存储方面的意外费用和账单差异。
- 排查 BigQuery 费用差异。 确定意外费用的来源,分析按需字节数费用,并验证容量承诺使用情况。
缓解数据丢失
如需恢复已更改或删除的历史数据,或在区域性服务中断期间保持业务连续性,请使用以下灾难恢复和数据保留工具:
- 恢复数据。查询或恢复在时间旅行窗口内更改或删除的表数据。如需了解详情,请参阅恢复数据。
- 时间旅行。在数据集中保留更新或删除的数据,保留期限可配置,以帮助防止意外修改。如需了解详情,请参阅时间旅行。
- 区域故障切换。在区域性服务中断期间,使用 BigQuery 托管式灾难恢复时,将次要副本提升为主要角色。如需了解详情,请参阅区域故障切换。
使用 API
以编程方式与 BigQuery 互动时,请使用以下资源来优化请求延迟时间和管理上传工作流:
- API 性能提示。遵循有关进行 API 调用的最佳实践,例如管理连接池、使用批量操作和处理重试。如需了解详情,请参阅 API 性能提示。
- API 上传。使用 REST API 可恢复和多部分上传请求来排查和管理数据注入问题。如需了解详情,请参阅 API 上传。
后续步骤
- 详细了解如何监控 BigQuery。
- 探索 BigQuery
INFORMATION_SCHEMA参考文档。 - 如需有关持续性或严重生产问题的支持,请与 Cloud Customer Care 联系。