Spanner 기본 제공 통계 테이블 개요

Spanner의 기본 제공 통계 테이블을 사용하면 데이터베이스의 문제를 조사할 수 있습니다. 이러한 테이블을 쿼리하여 쿼리, 트랜잭션, 읽기에 대한 통계를 얻을 수 있습니다. 다음 목록에는 각 통계 표와 제공되는 정보가 요약되어 있습니다.

쿼리 통계

데이터베이스의 문제를 조사할 때 어떤 쿼리가 비용이 많이 드는지, 자주 실행되거나 많은 데이터를 검사하는 지 파악하는 것이 도움이 됩니다.

쿼리 통계는 1분, 10분, 60분 간격으로 수집된 쿼리(DML 문 및 변경 내역 쿼리 포함)의 집계 통계입니다. 통계는 성공적으로 완료된 문과 실패했거나 시간을 초과했거나 사용자가 취소한 문에 대해 수집됩니다.

이 통계에는 가장 높은 CPU 사용량, 총 쿼리 실행 횟수, 평균 지연 시간, 스캔된 대부분의 데이터, 추가 기본 쿼리 통계가 포함됩니다. 이러한 통계를 사용하여 비용이 높거나 자주 실행되는 쿼리 또는 데이터 집약적인 쿼리를 식별할 수 있습니다.

쿼리 통계 대시보드를 사용하여 시계열에서 이러한 측정항목을 시각화할 수 있습니다. 이러한 사전 빌드된 대시보드를 사용하면 CPU 사용률 급증을 확인하고 비효율적인 쿼리를 식별할 수 있습니다.

가장 오래된 활성 쿼리

실행 중인 쿼리를 검사하여 시스템에서 현재 워크로드를 살펴보려는 경우가 있습니다. 가장 오래된 활성 쿼리 도구를 사용하여 데이터베이스 성능에 영향을 미칠 수 있는 장기 실행 쿼리를 조사할 수 있습니다. 이 도구를 통해 쿼리가 무엇인지, 언제 실행이 시작되었는지, 어떤 세션이 속해 있는지 확인할 수 있습니다.

변경 내역 쿼리는 가장 오래된 활성 쿼리에 포함되지 않습니다.

읽기 통계

읽기 통계는 Spanner Reads API를 사용하여 데이터베이스에서 가장 빈번하고 가장 리소스를 많이 사용하는 읽기를 조사하는 데 사용할 수 있습니다. 이러한 통계는 1분, 10분, 1시간의 3가지 간격으로 수집되고 저장됩니다. 각 시간 간격마다 Spanner는 리소스를 가장 많이 사용하는 읽기를 추적합니다.

읽기 통계를 사용하여 모든 읽기에서 결합된 리소스 사용을 찾고, CPU 사용량이 가장 많은 읽기를 찾고, 시간 경과에 따른 특정 읽기의 빈도가 어떻게 변경되는지 확인합니다.

트랜잭션 통계

트랜잭션 통계를 사용하여 트랜잭션 관련 문제를 조사할 수 있습니다. 예를 들어 경합을 유발하는 느린 실행 트랜잭션이 있는지 확인하거나 성능 회귀로 이어지는 트랜잭션 형태의 변경사항을 식별할 수 있습니다. 각 행에는 1, 10, 60분 간격으로 데이터베이스에 대해 실행된 모든 트랜잭션의 통계가 포함됩니다.

트랜잭션 통계 대시보드를 사용하여 시계열에서 이러한 측정항목을 시각화할 수 있습니다. 사전 빌드된 대시보드를 사용하면 트랜잭션의 지연 시간을 확인하고 문제가 있는 트랜잭션을 식별할 수 있습니다.

잠금 통계

잠금 통계를 사용하여 데이터베이스의 잠금 충돌을 조사할 수 있습니다. 트랜잭션 통계와 함께 사용하면 동시에 동일한 셀에 대한 잠금을 획득하도록 시도하여 잠금 충돌을 유발하는 트랜잭션을 찾을 수 있습니다.

잠금 통계 대시보드를 사용해서 시계열에서 이러한 측정항목을 시각화할 수 있습니다. 사전 빌드된 대시보드는 잠금 대기 시간을 보고 잠금 대기 시간이 높은 잠금 경합으로 인해 지연 시간이 발생했는지 확인하는 데 도움이 됩니다.

각 도구에 포함된 API 메서드

Spanner에서 트랜잭션, 읽기, 쿼리 간에 일부 겹치는 부분이 있습니다. 따라서 각 점검 도구 결과를 컴파일할 때 포함되는 API 메서드가 명확하지 않을 수 있습니다. 다음 표에는 주요 API 메서드와 각 도구와의 관계가 나와 있습니다.

API 메서드 트랜잭션 모드 쿼리 통계 가장 오래된 활성 쿼리 읽기 통계 트랜잭션 통계 잠금 통계
읽기, StreamingRead 읽기 전용 트랜잭션1 아니요 아니요 아니요 아니요
읽기-쓰기 트랜잭션 아니요 아니요
ExecuteSql, ExecuteStreamingSql 읽기 전용 트랜잭션1 2 2 아니요 아니요 아니요
읽기-쓰기 트랜잭션 아니요
ExecuteBatchDml 읽기-쓰기 트랜잭션 3 4 아니요
커밋 읽기-쓰기 트랜잭션(DML5, 변형6) 아니요 아니요 아니요

참고:

1 읽기 전용 트랜잭션은 트랜잭션 통계 또는 잠금 통계에 포함되지 않습니다. 읽기-쓰기 트랜잭션만 트랜잭션 통계 및 잠금 통계에 포함됩니다.

2 PartitionQuery API에서 실행되는 쿼리는 쿼리 통계 또는 가장 오래된 활성 쿼리에 포함되지 않습니다.

3 DML 문 배치는 쿼리 통계에서 단일 항목으로 나타납니다.

4 배치에 있는 문은 전체 배치가 아닌 가장 오래된 활성 쿼리에 나타납니다.

5 커밋되지 않은 DML 작업은 트랜잭션 통계에 포함되지 않습니다.

6 사실상 작동하지 않는 빈 변형은 트랜잭션 통계에 포함되지 않습니다.

테이블 크기 통계

테이블 크기 통계를 사용하여 데이터베이스의 테이블과 색인의 이전 크기를 모니터링할 수 있습니다.

테이블 크기 통계를 사용하여 테이블, 색인, 변경 내역 테이블의 크기 추세를 확인합니다. 가장 큰 테이블과 색인을 추적할 수도 있습니다.

이 기능은 이전 관점만 제공합니다. 실시간 모니터링용이 아닙니다.

테이블 작업 통계

테이블 작업 통계를 사용하여 다음을 수행할 수 있습니다.

  • 데이터베이스에서 테이블과 색인의 사용량을 모니터링합니다.
  • 테이블 및 색인의 사용 추세를 확인합니다.
  • 트래픽 변화를 식별합니다.

또한 테이블 스토리지의 변경사항과 쓰기 트래픽 변경사항의 상관관계를 보여줄 수 있습니다.

분할의 핫스팟 디버그

데이터베이스의 핫스팟을 디버그하여 데이터베이스에서 또는 분할을 찾을 수 있습니다. 즉, 분할의 부하 중 상당 부분이 사용 가능한 리소스로 제약됩니다. 지난 6시간 동안 분할 CPU 사용량 점수가 가장 높았던 분할의 통계를 1분 간격으로 확인할 수 있습니다.