테이블 크기 통계

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 스튜디오 페이지

  • 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 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은 데이터베이스의 기존 테이블 또는 색인이어야 합니다.
쿼리 출력
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일 간격으로 보관합니다.

다음 단계