按天统计 BigQuery 槽位使用情况
每日槽位使用情况为您提供 BigQuery 计算消耗的大图景。此查询生成每天平均槽位使用情况的时间序列,对无活动的天数进行零填充,非常适合趋势分析和容量规划。
为什么重要
每日趋势揭示了关键决策的信息模式:您是否在增长并需要更多容量?周末是否显示可以缩减的最小使用量?是否有可以利用计划预留来利用的每周模式?这些数据对于从按需定价过渡到 Editions 定价至关重要。
工作原理
查询从 INFORMATION_SCHEMA.JOBS_TIMELINE 读取,该视图提供每秒槽位使用数据。按天汇总 period_slot_ms(除以每天毫秒数)以获得平均槽位使用情况。日历 CTE 创建完整的时间序列,LEFT JOIN 对空缺进行零填充。
SQL 查询
Fill in your details to get a ready-to-run query:
-- Average slot consumption per day (zero-filled time series)
DECLARE lookback_days INT64 DEFAULT 14;
DECLARE ms_per_day INT64 DEFAULT 86400000;
WITH daily_slots AS (
SELECT
TIMESTAMP_TRUNC(period_start, DAY) AS day,
ROUND(SUM(period_slot_ms) / ms_per_day, 2) AS avg_slots
FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE
WHERE period_start >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
AND statement_type != 'SCRIPT'
GROUP BY day
),
calendar AS (
SELECT ts AS day FROM UNNEST(GENERATE_TIMESTAMP_ARRAY(
TIMESTAMP_TRUNC(TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY), DAY),
TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY),
INTERVAL 1 DAY)) AS ts
)
SELECT
c.day,
IFNULL(d.avg_slots, 0) AS avg_slots
FROM calendar c
LEFT JOIN daily_slots d ON c.day = d.day
ORDER BY c.day查询说明
JOBS_TIMELINE 每秒记录 period_slot_ms。对这些值求和并除以一天中的毫秒数(86,400,000)得到该天的平均槽位使用数量。GENERATE_TIMESTAMP_ARRAY 创建完整的逐日时间线,LEFT JOIN 确保对无使用的天数进行零填充。
关键洞察
一致的每日使用量表明计划管道——适合承诺 Editions 预留的好候选者。
安静天数伴随的高峰使用量表明临时工作负载——按需或自动扩展 Editions 可能更具成本效益。
周末与工作日模式可以为预留调度提供信息(周末缩减)。
几周内向上的趋势表明工作负载在增长——在达到槽位限制之前规划容量。
最佳实践
- 1
使用此数据将 Editions 基准槽位调整为您的 P50 每日使用量。
- 2
设置自动扩展器最大槽位以覆盖 P95 每日峰值。
- 3
在非峰值时段安排繁重的 ETL 作业,以平滑槽位需求。
- 4
对槽位使用量超过预期最大值的天数发出警报。
相关指南
按小时统计 BigQuery 槽位使用情况
监控每小时 BigQuery 槽位消耗,以识别峰值使用窗口并优化预留调度。
阅读指南按分钟统计 BigQuery 槽位使用情况
获取分钟级 BigQuery 槽位消耗数据。对于调试性能问题和了解突发槽位需求至关重要。
阅读指南按秒统计 BigQuery 槽位使用情况
用于详细突发分析的秒级 BigQuery 槽位消耗。性能调试可用的最精细粒度。
阅读指南BigQuery 按需与 Editions:每查询费用比较
比较每个查询的按需与 BigQuery Editions 定价。获取 Standard、Enterprise 和 Enterprise Plus 版本的每查询建议。
阅读指南