Spanner 提供下列內建資料表:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
:列出資料庫中資料表和索引的大小。SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
:列出每個地區群組中資料庫內的資料表和索引大小。
資料表大小以位元組為單位。表格大小包含資料版本。您可以使用這些內建表格,監控資料表和索引的大小變化。您也可以在建立、刪除及修改索引時,監控索引的大小 (例如在索引中插入更多資料列,或在索引中新增資料欄)。此外,您也可以查看變更資料流表格的大小。
您可以使用資料庫儲存空間總計指標監控資料庫儲存空間。
您可以使用 SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
和 SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
,查看資料庫儲存空間的細目。
存取資料表大小統計資料
Spanner 會在 SPANNER_SYS
結構定義中提供資料表大小統計資料。您可以透過下列方式存取 SPANNER_SYS
資料:
Google Cloud 控制台中的資料庫 Spanner Studio 頁面。
gcloud spanner databases execute-sql
指令。
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 |
資料表大小 (以位元組為單位)。 |
USED_SSD_BYTES |
FLOAT64 |
資料表使用的 SSD 儲存空間 (以位元組為單位)。 |
USED_HDD_BYTES |
FLOAT64 |
資料表使用的硬碟儲存空間 (以位元組為單位)。 |
查詢範例
本節包含多個擷取匯總資料表大小統計資料的範例 SQL 陳述式。您可以使用用戶端程式庫、gcloud spanner 或 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
必須是資料庫中現有的資料表或索引。
PostgreSQL
SELECT interval_end, used_bytes FROM spanner_sys.table_sizes_stats_1hour WHERE interval_end > spanner.timestamptz_subtract(now(), '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 |
TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
包含資料庫中所有資料表的大小,並依據每個區域群組的 interval_end
排序。間隔是以時鐘時間為準,結束時間為整點。在內部,Spanner 每 5 分鐘會從所有伺服器收集資料,然後在不久後將資料提供至 TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
資料表。然後系統會計算每小時的平均值。舉例來說,在上午 11:59:30,TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
會顯示上午 10:00:00 到上午 10:59:59 間隔內,每個地區群組的平均表格大小。
資料表結構定義
資料欄名稱 | 類型 | 說明 |
---|---|---|
INTERVAL_END |
TIMESTAMP |
收集表格大小的時間間隔結束時間。 |
TABLE_NAME |
STRING |
資料表或索引的名稱。 |
LOCALITY_GROUP |
STRING |
地區群組的名稱。 |
USED_BYTES |
FLOAT64 |
資料表大小 (以位元組為單位)。 |
USED_SSD_BYTES |
FLOAT64 |
資料表使用的 SSD 儲存空間 (以位元組為單位)。 |
USED_HDD_BYTES |
FLOAT64 |
資料表使用的硬碟儲存空間 (以位元組為單位)。 |
資料保留
Spanner 至少會保留SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
前 30 天的資料。
後續步驟
- 瞭解其他內省工具。
- 瞭解 Spanner 為每個資料庫儲存的其他資訊。這些資訊儲存在資料庫的資訊結構定義資料表中。
- 進一步瞭解 Spanner 適用的 SQL 最佳做法。
- 進一步瞭解如何調查 CPU 使用率偏高問題。