Cloud 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
命令行工具或 Google 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 天)。
后续步骤
- 了解其他内省工具。
- 了解 Spanner 在数据库的信息架构表中为每个数据库存储的其他信息。
- 详细了解 Spanner 的 SQL 最佳实践。
- 详细了解调查高 CPU 利用率。