テーブルサイズの統計

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 コマンド

  • executeQueryAPI

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

データの保持

少なくとも、過去 30 日間にわたる間隔で Spanner が SPANNER_SYS.TABLE_SIZES_STATS_1HOUR のデータを保持します。

次のステップ