이 페이지에서는 잠금 통계와 트랜잭션 통계를 사용하여 긴 지연 시간을 유발하는 트랜잭션을 식별하는 방법을 설명합니다.
개요
여러 동시 트랜잭션의 일관성이 보장되도록 Spanner는 잠금을 사용하여 데이터에 대한 액세스를 제어합니다. 잠금 경합은 동일한 잠금에 자주 액세스해야 하는 트랜잭션이 많을 때 발생하며 이로 인해 지연 시간이 길어집니다. 시각적 인터페이스가 없으면 잠금 경합 문제를 많이 일으키는 문제가 있는 트랜잭션을 식별하는 것이 지루할 수 있습니다.
Spanner 작업은 작업이 읽기-쓰기 트랜잭션의 일부인 경우에 잠금을 획득합니다. 읽기 전용 트랜잭션에서는 잠금을 획득하지 않습니다.
Spanner는 다음 단계를 안내하여 긴 지연 시간을 유발하는 트랜잭션을 식별하는 데 도움을 줍니다.
가격 책정
잠금 통계나 트랜잭션 통계에 대한 추가 비용은 없습니다.
리전 구성
리전 구성과 멀티 리전 구성 모두에서 잠금 통계와 트랜잭션 통계를 사용할 수 있습니다.
데이터 보관
잠금 통계 대시보드와 트랜잭션 통계 대시보드에 표시되는 데이터의 최대 데이터 보관 기간은 30일입니다. 그래프의 경우 데이터는 SPANNER_SYS.* 테이블에서 검색되며 최대 보관 기간은 30일입니다.
이러한 테이블과 데이터 보관에 대한 자세한 내용은 잠금 통계 및 트랜잭션 통계를 참조하세요.
필요한 역할
IAM 사용자인지 또는 세분화된 액세스 제어 사용자인지에 따라 다른 IAM 역할 및 권한이 필요합니다.
Identity and Access Management(IAM) 사용자
잠금 및 트랜잭션 통계 페이지를 보는 데 필요한 권한을 얻으려면 관리자에게 인스턴스에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
- 
  
  
    
      Cloud Spanner 뷰어(roles/spanner.viewer)
- 
  
  
    
      Cloud Spanner 데이터베이스 리더(roles/spanner.databaseReader)
잠금 및 트랜잭션 통계 페이지를 보려면 Cloud Spanner 데이터베이스 리더(
roles/spanner.databaseReader) 역할의 다음 권한이 필요합니다.
- spanner.databases.beginReadOnlyTransaction
- spanner.databases.select
- spanner.sessions.create
세분화된 액세스 제어 사용자
세분화된 액세스 제어 사용자인 경우 다음을 확인합니다.
- Cloud Spanner 뷰어(roles/spanner.viewer)입니다.
- 세분화된 액세스 제어 권한만 있고 spanner_sys_reader시스템 역할 또는 구성원 역할 중 하나를 부여받았습니다.
- 데이터베이스 개요 페이지에서 spanner_sys_reader또는 구성원 역할을 현재 시스템 역할로 선택합니다.
자세한 내용은 세분화된 액세스 제어 정보 및 세분화된 액세스 제어 시스템 역할을 참조하세요.
Spanner Monitoring을 사용하여 지연 시간 급증 확인
Cloud Monitoring을 사용하여 모든 요청에 지정된 임계값을 초과하는 측정항목에 대한 알림을 설정할 수 있습니다.
인스턴스의 지연 시간 급증을 나타내는 알림을 받으면 다양한 중요 측정항목의 차트가 표시되는 Spanner Monitoring 대시보드에서 이를 확인할 수 있습니다. 지연 시간 차트를 사용하면 50번째 및 99번째 백분위수에서 긴 지연 시간을 볼 수 있습니다.
99번째 백분위수에서 쓰기 지연 시간 급증을 확인하려면 다음 단계를 수행합니다.
- Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다. 
- 인스턴스의 이름을 클릭합니다. - Google Cloud 콘솔에 인스턴스 개요가 표시됩니다. 
- 탐색 메뉴에서 모니터링을 클릭합니다. - Google Cloud 콘솔에 인스턴스의 데이터 차트가 표시됩니다. 
- 지연 시간 차트에서 함수를 - Write로 설정하고 백분위수를- 99th로 설정합니다.
- 새로 고친 차트에 급증이 표시되어 있는지 확인합니다. 

CPU 사용률이 급증하지 않고 초당 작업 수 급증 오류가 관찰되면 잠금 경합으로 인해 지연 시간이 급증한 것일 수 있습니다.
잠금 통계를 사용하여 잠금 경합 문제 확인
잠금 통계 대시보드를 사용하면 인스턴스나 선택한 데이터베이스의 잠금 대기 시간을 볼 수 있습니다. 잠금 경합으로 인한 지연 시간이 길어졌는지 확인하는 데 도움이 됩니다.
긴 잠금 대기 시간 확인
잠금 대기 시간이 긴지 확인하려면 다음 단계를 수행합니다.
- 탐색 메뉴에서 잠금 통계를 클릭합니다. - Google Cloud 콘솔에 인스턴스의 각 데이터베이스에 대한 잠금 대기 시간이 표시된 총 잠금 대기 차트가 표시됩니다. - 잠금 통계 대시보드의 오른쪽 상단 모서리에 있는 시간 선택기에 표시된 것처럼 기본적으로 - 1 hour의 데이터가 표시됩니다. 더 넓은 범위의 데이터를 보려면- 1 day와 같은 다른 옵션을 선택합니다.- 자세한 내용은 차트 다루기를 참조하세요. 
- 상단의 데이터베이스 선택기에서 잠금 대기 시간이 가장 긴 데이터베이스를 선택합니다. - 총 잠금 대기 차트가 새로고침되어 선택한 데이터베이스의 데이터만 표시됩니다. - 또한 또 다른 차트인 행 범위당 잠금 대기에는 잠금 대기 시간 그래프가 행 범위별로 표시됩니다. 
- 그래프를 클릭하고 수평으로 드래그하여 지연 시간 급증이 표시되는 시간을 확장합니다. 

잠금 대기 데이터 분석
잠금 통계 테이블에는 SPANNER_SYS.LOCK_STATS 시스템 테이블의 다음 열이 표시됩니다.
- 행 범위 시작 키: 잠금 충돌이 발생한 row key입니다. 충돌에 행 범위가 포함된 경우 값은 범위의 시작 키를 나타냅니다. 더하기 기호(+)는 범위를 나타냅니다.
- 잠금 대기: 가로 막대에 시각적으로 표시되는 총 잠금 대기 시간입니다. 기본적으로 이 테이블은 정렬에 이 열을 사용하고 상단에 잠금 대기 시간이 가장 긴 행 범위 시작 키를 표시합니다.
- 잠금 대기(초): row key 범위의 모든 열에 기록된 잠금 충돌의 누적 잠금 대기 시간(초)입니다.
- 잠금 대기 비율: row key 범위의 모든 열에 기록된 잠금 충돌 대기 시간이며 데이터베이스의 모든 row key 범위에 대한 총 잠금 대기 시간 비율로 표시됩니다.
행 범위당 잠금 대기 시간 차트의 데이터와 테이블의 데이터를 연결하려면 선을 선택합니다. 관련 행이 강조표시됩니다. 반대로, 테이블의 행에 해당하는 체크박스를 선택하면 차트의 관련 선이 표시됩니다.

테이블의 데이터를 필터링하려면 다음을 수행합니다.
- 필터 옆에 있는 텍스트 상자를 클릭합니다. 
- 속성을 선택하고 연산자를 선택한 후 값을 지정합니다. 
필터와 일치하는 데이터가 테이블에 표시됩니다.
샘플 잠금 요청 보기
샘플 잠금 요청 패널에는 경합 트랜잭션의 샘플 잠금 요청에 대한 세부정보가 표시됩니다.
행 범위 시작 키의 샘플 잠금 요청 정보를 보려면 테이블에서 관련 링크를 클릭합니다.
테이블에는 다음 정보 열이 표시됩니다.
- 샘플 열 이름: row key 범위에서 잠금 충돌이 발생한 열입니다.
- 잠금 모드: 요청된 잠금 모드입니다.
- 트랜잭션 보기: 잠금과 경합할 수 있는 트랜잭션을 보여주는 트랜잭션 통계 페이지에 대한 링크입니다.
 
 
트랜잭션 통계를 사용하여 경합 트랜잭션 식별
트랜잭션 통계 대시보드를 사용하면 인스턴스나 선택한 데이터베이스의 트랜잭션 지연 시간을 볼 수 있습니다. 잠금 경합으로 인해 긴 지연 시간을 유발할 수 있는 트랜잭션을 식별하는 데 도움이 됩니다.
트랜잭션 지연 시간 보기
트랜잭션 지연 시간을 보려면 다음 단계를 수행합니다.
- 왼쪽 탐색 메뉴에서 트랜잭션 통계를 클릭합니다. 
- 상단의 데이터베이스 선택기에서 잠금 대기 시간이 가장 긴 데이터베이스를 선택합니다. - 또는 잠금 통계 대시보드에서 트랜잭션 보기를 클릭하여 특정 샘플 열에서 읽거나 쓰는 트랜잭션을 필터링합니다. - 트랜잭션 통계 대시보드의 오른쪽 상단 모서리에 표시된 시간 선택기처럼 기본적으로 - 1 hour의 데이터가 표시됩니다.
대시보드에는 다음 차트가 표시됩니다.
- 평균 지연 시간(모든 트랜잭션) 차트에는 인스턴스의 모든 트랜잭션에 대한 지연 시간이 표시됩니다. 
- 평균 지연 시간(트랜잭션당) 차트에는 선택한 데이터베이스의 각 트랜잭션에 대한 지연 시간이 표시됩니다. 

트랜잭션 데이터 분석
차트 아래의 테이블에서 각 트랜잭션의 데이터를 보고 분석할 수 있습니다. 이 테이블에서는 다음 열에 있는 SPANNER_SYS.TXN_STATS 시스템 테이블의 측정항목 데이터를 보여줍니다.
- 지문: 트랜잭션 태그의 해시입니다(있는 경우). 그렇지 않으면 해시는 트랜잭션과 관련된 작업을 기준으로 계산됩니다. 값은 트랜잭션 세부정보 페이지로 연결되는 링크입니다.
- 트랜잭션 태그: 트랜잭션의 선택적 트랜잭션 태그입니다. 태그 문자열이 동일한 여러 트랜잭션의 통계 데이터는 태그 문자열과 일치하는 TRANSACTION_TAG라벨이 있는 단일 행으로 그룹화됩니다.
- 영향을 받는 테이블: 트랜잭션의 영향을 받는 테이블입니다.
- 읽은 테이블 열: 트랜잭션에서 읽은 열입니다.
- 작성한 테이블 열: 트랜잭션이 작성된 열입니다.
- 평균 지연 시간(초): 트랜잭션을 수행하는 데 걸린 평균 시간(초)입니다. 기본적으로 테이블은 이 열을 기준으로 내림차순으로 정렬됩니다.
평균 지연 시간(트랜잭션당) 차트의 데이터와 테이블의 데이터를 상관관계로 지정하려면 차트의 선을 선택합니다. 테이블의 해당 행이 강조표시됩니다.
테이블의 데이터를 필터링하려면 다음을 수행합니다.
- 필터 옆을 클릭합니다. 
- 속성을 선택하고 연산자를 선택한 후 값을 지정합니다. 
필터와 일치하는 데이터가 테이블에 표시됩니다.

트랜잭션에 대한 자세한 정보 보기
지연 시간이 가장 긴 트랜잭션과 같은 트랜잭션에 대한 자세한 정보를 보려면 테이블의 각 행에서 디지털 지문 링크를 클릭합니다.
트랜잭션 세부정보 페이지가 나타납니다. 상단의 세부정보 테이블 옆에 다음 정보가 표시됩니다.
- 각 측정항목의 숫자 값을 보여주는 막대입니다. - 평균 바이트: 트랜잭션에서 작성한 평균 바이트 수입니다.
- 평균 지연 시간: 트랜잭션의 첫 번째 작업에서 커밋하거나 취소하는 데 걸린 평균 시간(초)입니다.
- 평균 커밋 지연 시간: 커밋 작업을 수행하는 데 걸린 평균 시간(초)입니다.
- 총 시도 횟수: 총 트랜잭션 시도 횟수입니다.
- 총 취소 횟수: 트랜잭션의 커밋 메서드를 호출하기 전에 취소한 시도를 포함하여 취소된 총 트랜잭션 시도 횟수입니다.
 
- 이러한 값을 설명하는 차트입니다. - 또한 평균 참여자 차트에는 각 커밋 시도의 평균 참여자 수가 표시됩니다. 

지연 시간을 줄이기 위해 트랜잭션 형태를 최적화할 수 있는지 조사합니다. 잠금 경합을 줄이려면 권장사항을 적용하는 것이 좋습니다.