按查询分析 BigQuery 费用
此查询为您提供项目中每次查询执行的逐行视图,包括按需费用、槽位使用情况和计费持续时间。这是可用的最细粒度费用分析查询——非常适合深入研究单个昂贵查询。
为什么重要
聚合费用视图(按用户、按标签)从高层次告诉您钱去了哪里,但要真正解决问题,您需要查看单个查询。这种按查询的分解让您能够识别消耗最多资源的确切 SQL 语句,并优先考虑具有最高 ROI 的优化。
工作原理
查询从 INFORMATION_SCHEMA.JOBS_BY_PROJECT 读取,并为每次查询执行计算几个费用指标:估算槽位数、按需费用(基于计费字节数)、计费槽位小时数(用于 Editions 比较)和执行次数。它还应用 BigQuery 的最低计费规则——每次查询最少 10 MiB,Editions 最少 1 分钟持续时间。
SQL 查询
Fill in your details to get a ready-to-run query:
-- Per-query cost breakdown with slot and duration metrics
DECLARE lookback_days INT64 DEFAULT 7;
WITH base_jobs AS (
SELECT
project_id,
query,
start_time,
end_time,
COALESCE(total_bytes_billed, 0) AS bytes_billed,
total_slot_ms,
TIMESTAMP_DIFF(end_time, start_time, MILLISECOND) AS duration_ms,
ROUND(SAFE_DIVIDE(total_slot_ms,
TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 2) AS avg_slots
FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
AND state = 'DONE' AND total_slot_ms IS NOT NULL
),
with_billing AS (
SELECT *,
CEIL(avg_slots / 100) * 100 AS billed_slots,
GREATEST(duration_ms, 60000) / 3.6e6 AS billed_hours,
GREATEST(bytes_billed, 10 * POW(1024, 2)) AS billed_bytes
FROM base_jobs
),
freq AS (
SELECT query, COUNT(*) AS exec_count FROM base_jobs GROUP BY query
)
SELECT
...查询说明
查询通过将 total_slot_ms 除以执行时间来计算估算槽位数。应用 BigQuery 的最低计费规则:最少 10 MiB 字节和 1 分钟最低持续时间。槽位数向上取整到最近的 100(与自动扩展器增量匹配)。按需费用按 $6.25/TiB 计算,槽位小时数用于 Editions 费用比较。
关键洞察
按需费用高但槽位少的查询扫描了太多数据——它们需要分区过滤器或列修剪。
槽位小时多但计费字节少的查询在计算上昂贵——寻找复杂的 JOIN、DISTINCT 或窗口函数。
执行次数多的查询是结果缓存或物化视图的候选者。
比较 on_demand_cost_usd 与 slot_hours,以确定哪种计费模式对每次查询更便宜。
最佳实践
- 1
将优化工作集中在费用最高的前 10 个查询上——它们通常占总支出的 60-80%。
- 2
对于频繁执行的查询,考虑物化结果或使用 BI Engine。
- 3
使用 EXPLAIN 了解优化前后的查询执行计划。
- 4
对超过费用阈值的查询设置自动警报。
相关指南
按用户分析 BigQuery 费用
找出哪些用户产生了最多的 BigQuery 支出。查询 INFORMATION_SCHEMA,按按需费用对用户排名并识别优化目标。
阅读指南按标签分析 BigQuery 费用
按作业标签分解 BigQuery 费用。使用作业上的键值对将支出归因于团队、管道或功能。
阅读指南按费用排名的 BigQuery 热门查询
按按需费用找出最昂贵的 BigQuery 查询。按总计费字节数对查询排名,识别项目中最大的费用驱动因素。
阅读指南按频率排名的 BigQuery 热门查询
识别最常执行的 BigQuery 查询。找出适合缓存、物化视图或整合的重复查询。
阅读指南