表大小统计信息

Spanner 提供了一个内置表 SPANNER_SYS.TABLE_SIZES_STATS_1HOUR,用于列出数据库中表和索引的大小。表大小以字节为单位。表大小包括数据版本。您可以使用 SPANNER_SYS.TABLE_SIZES_STATS_1HOUR 监控表和索引随时间的大小变化。您还可以在创建/删除索引以及修改索引(向索引中插入更多行或向其中添加新列)时监控索引的大小。此外,您还可以查看更改流表的大小。

您可以使用“数据库总存储空间”指标监控数据库存储空间。您可以使用 SPANNER_SYS.TABLE_SIZES_STATS_1HOUR 查看数据库存储空间的细分情况。

可用性

SPANNER_SYS 数据只能通过 SQL 接口获得。例如:

  • Google Cloud 控制台中的数据库的 Spanner Studio 页面

  • gcloud spanner databases execute-sql 命令

  • executeQuery API

Spanner 提供的其他单次读取方法不支持 SPANNER_SYS

TABLE_SIZES_STATS_1HOUR

SPANNER_SYS.TABLE_SIZES_STATS_1HOUR 包含数据库中所有表的大小,按 interval_end 排序。间隔基于时钟时间,结束于整点。在内部,Spanner 每 5 分钟会从所有服务器收集数据,然后稍后在 TABLE_SIZES_STATS_1HOUR 表中提供这些数据。然后,系统会按每个小时对数据进行平均计算。例如,在上午 11:59:30,TABLE_SIZES_STATS_1HOUR 会显示上午 10:00:00 到上午 10:59:59 这个时间段内的平均表大小。

表架构

列名 类型 说明
INTERVAL_END TIMESTAMP 收集表大小的时间间隔的结束时间。
TABLE_NAME STRING 表或索引的名称。
USED_BYTES FLOAT64 表大小(以字节为单位)。

示例查询

本部分提供了几个可检索汇总表大小统计信息的示例 SQL 语句。您可以使用客户端库gcloud spannerGoogle Cloud 控制台运行这些 SQL 语句。

查询最近时间段内最大的 4 个表和索引

以下查询会返回最近时间段内最大的 4 个表和索引:

    SELECT interval_end,
          table_name,
          used_bytes
    FROM spanner_sys.table_sizes_stats_1hour
    WHERE interval_end = (
          SELECT MAX(interval_end)
          FROM spanner_sys.table_sizes_stats_1hour)
    ORDER BY used_bytes DESC
    LIMIT 4;
  

查询输出
interval_end table_name used_bytes
2022-11-15 13:00:00-07:00 order_item 60495552
2022-11-15 13:00:00-07:00 orders 13350000
2022-11-15 13:00:00-07:00 item_inventory 2094549
2022-11-15 13:00:00-07:00 customer 870000

过去 24 小时内特定表或索引的查询大小趋势

以下查询会返回过去 24 小时内表的大小:

GoogleSQL

SELECT interval_end, used_bytes
  FROM spanner_sys.table_sizes_stats_1hour
WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR)
  AND table_name = table_name
ORDER BY interval_end DESC;

其中:

  • table_name 必须是数据库中现有的表或索引。
查询输出
interval_end used_bytes
2022-11-15 13:00:00-07:00 13350000
2022-11-15 12:00:00-07:00 13350000
2022-11-15 11:00:00-07:00 13350000
2022-11-15 10:00:00-07:00 13350000
2022-11-15 09:00:00-07:00 13350000
2022-11-15 08:00:00-07:00 12350000
2022-11-15 07:00:00-07:00 12350000
2022-11-15 06:00:00-07:00 12350000
2022-11-15 05:00:00-07:00 11350000
2022-11-15 04:00:00-07:00 11350000
2022-11-15 03:00:00-07:00 11350000
2022-11-15 02:00:00-07:00 11350000
2022-11-15 01:00:00-07:00 11350000
2022-11-15 00:00:00-07:00 10350000
2022-11-14 23:00:00-07:00 10350000
2022-11-14 22:00:00-07:00 10350000
2022-11-14 21:00:00-07:00 10350000
2022-11-14 20:00:00-07:00 10350000
2022-11-14 19:00:00-07:00 10350000
2022-11-14 18:00:00-07:00 10350000
2022-11-14 17:00:00-07:00 10350000
2022-11-14 16:00:00-07:00 10350000
2022-11-14 15:00:00-07:00 10350000
2022-11-14 14:00:00-07:00 10350000
2022-11-14 13:00:00-07:00 10350000

数据保留

Spanner 至少会为 SPANNER_SYS.TABLE_SIZES_STATS_1HOUR 保留前 30 天中的时间段内的数据。

后续步骤