Get a free observability report to evaluate the potential savingsContact us →
存储3 分钟阅读

按最后查询日期统计 BigQuery 表存储

BigQuery 中的存储费用通常被忽视,因为与计算费用相比它们很小。但随着时间的推移,没有人查询的过时表的积累可能带来可观的月度支出。此查询显示按最后查询时间排序的每个表及其存储费用。

为什么重要

大型组织可能积累数千个不再使用的表——来自旧管道的遗留物、一次性分析或已弃用的功能。这些表每月都在悄悄地积累存储费用。通过识别几周或几个月未被查询的表,您可以归档、删除或将其转换为更便宜的存储层。

工作原理

查询将 INFORMATION_SCHEMA.JOBS_BY_PROJECT(查找每个表的最后查询时间)与 TABLE_STORAGE(尺寸数据)和 TABLE_OPTIONS(确定逻辑与物理计费模式)连接。它使用 Google 发布的每 GiB 定价,根据活跃字节与长期字节计算存储费用。

SQL 查询

Fill in your details to get a ready-to-run query:

SQL
-- Find stale tables sorted by last query date with storage cost

DECLARE lookback_days INT64 DEFAULT 30;

-- US multi-region pricing ($/GiB/month)
DECLARE logical_active_price NUMERIC DEFAULT 0.02;
DECLARE logical_longterm_price NUMERIC DEFAULT 0.01;
DECLARE physical_active_price NUMERIC DEFAULT 0.04;
DECLARE physical_longterm_price NUMERIC DEFAULT 0.02;

WITH last_access AS (
  SELECT
    ref.project_id, ref.dataset_id, ref.table_id,
    MAX(j.creation_time) AS last_query_at
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT j,
    UNNEST(j.referenced_tables) ref
  WHERE j.state = 'DONE' AND j.job_type = 'QUERY'
    AND j.creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL lookback_days DAY)
  GROUP BY 1, 2, 3
),
storage_info AS (
  SELECT
    s.project_id,
    s.table_schema AS dataset_id,
    s.table_name AS table_id,
    IFNULL(opt.option_value, 'LOGICAL') AS model,
    IF(opt.option_value = 'PHYSICAL', s.total_physical_bytes, s.total_logical_bytes) AS size_bytes,
    IF(opt.option_value = 'PHYSICAL', s.active_physical_bytes, s.active_logical_bytes) AS active_bytes,
    IF(opt.option_value = 'PHYSICAL', s.long_term_physical_bytes, s.long_term_logical_bytes) AS lt_bytes
  FROM `your-project`.`region-us`.INFORMATION_SCHEMA.TABLE_STORAGE s
...
将 your-project 和 region-us 替换为您的 GCP 项目和数据集区域。

查询说明

查询交叉引用两个数据源:作业元数据(每个表的最后查询时间)和表存储元数据(尺寸和计费模式)。在回溯窗口内从未被查询的表首先显示(NULLS FIRST)。存储费用使用活跃与长期字节以及逻辑或物理计费模式的适当定价计算。

关键洞察

  • lightbulb

    列表顶部的表(从未查询或很久以前查询)是删除或归档的最佳候选者。

  • lightbulb

    未被查询的大型表可能仍被其他系统引用——删除前验证。

  • lightbulb

    超过 90 天的表自动获得长期定价(便宜 50%),但删除未使用的表可节省 100%。

  • lightbulb

    物理计费模式表每 GiB 费用为 2 倍,但受益于压缩——检查您的表是否高度可压缩。

最佳实践

  1. 1

    设置对过去 30 天内未查询表的月度审查。

  2. 2

    对数据集实施表过期策略(default_table_expiration_ms)用于临时数据。

  3. 3

    将重要但未使用的表归档到 Google Cloud Storage(比 BigQuery 存储便宜)。

  4. 4

    将具有高压缩比的数据集切换到物理计费模式,最多可节省 70% 的存储费用。

想让 CloudClerk 自动找到这些节省吗?

我们的平台连接到您的 BigQuery 项目,自动运行这些分析,并提供 AI 驱动的优化建议——所有数据完全匿名。

相关指南