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
で並べ替えられたデータベース内のすべてのテーブルのサイズが含まれます。間隔は時計の時刻に基づいており、正時に終了します。内部的には、5 分ごとに Spanner がすべてのサーバーからデータを収集し、その後すぐに TABLE_SIZES_STATS_1HOUR
テーブルでデータを使用できるようにします。このデータは 1 時間ごとに平均化されます。たとえば、午前 11 時 59 分 30 秒に、TABLE_SIZES_STATS_1HOUR
で午前 10 時 00 分 00 秒から午前 10 時 59 分 59 秒までの平均テーブル サイズが表示されます。
テーブル スキーマ
列名 | タイプ | 説明 |
---|---|---|
INTERVAL_END |
TIMESTAMP |
テーブルサイズが収集された時間間隔の終了。 |
TABLE_NAME |
STRING |
テーブルまたはインデックスの名前。 |
USED_BYTES |
FLOAT64 |
テーブルサイズ(バイト単位) |
クエリの例
このセクションには、テーブルサイズの統計情報の集計を取得する SQL ステートメントの例がいくつか含まれています。これらの SQL ステートメントは、クライアント ライブラリ、gcloud spanner、または Google Cloud Console を使用して実行できます。
最新の時間間隔で上位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 は、少なくとも過去 30 日間にわたり SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
のデータを保持します。
次のステップ
- 別のイントロスペクション ツールについて学習します。
- Spanner が各データベースについて、データベースの情報スキーマ テーブルに保存するその他の情報について学習します。
- Spanner に関する SQL のベスト プラクティスについて学習します。
- 高 CPU 使用率の調査について学習します。