이 페이지에서는 잠금 통계와 트랜잭션 통계를 사용하여 긴 지연 시간을 유발하는 트랜잭션을 식별하는 방법을 설명합니다.
개요
여러 동시 트랜잭션의 일관성이 보장되도록 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
라벨이 있는 단일 행으로 그룹화됩니다. - 영향을 받는 테이블: 트랜잭션의 영향을 받는 테이블입니다.
- 읽은 테이블 열: 트랜잭션에서 읽은 열입니다.
- 작성한 테이블 열: 트랜잭션이 작성된 열입니다.
- 평균 지연 시간(초): 트랜잭션을 수행하는 데 걸린 평균 시간(초)입니다. 기본적으로 테이블은 이 열을 기준으로 내림차순으로 정렬됩니다.
평균 지연 시간(트랜잭션당) 차트의 데이터와 테이블의 데이터를 상관관계로 지정하려면 차트의 선을 선택합니다. 테이블의 해당 행이 강조표시됩니다.
테이블의 데이터를 필터링하려면 다음을 수행합니다.
필터 옆을 클릭합니다.
속성을 선택하고 연산자를 선택한 후 값을 지정합니다.
필터와 일치하는 데이터가 테이블에 표시됩니다.
트랜잭션에 대한 자세한 정보 보기
지연 시간이 가장 긴 트랜잭션과 같은 트랜잭션에 대한 자세한 정보를 보려면 테이블의 각 행에서 디지털 지문 링크를 클릭합니다.
트랜잭션 세부정보 페이지가 나타납니다. 상단의 세부정보 테이블 옆에 다음 정보가 표시됩니다.
각 측정항목의 숫자 값을 보여주는 막대입니다.
- 평균 바이트: 트랜잭션에서 작성한 평균 바이트 수입니다.
- 평균 지연 시간: 트랜잭션의 첫 번째 작업에서 커밋하거나 취소하는 데 걸린 평균 시간(초)입니다.
- 평균 커밋 지연 시간: 커밋 작업을 수행하는 데 걸린 평균 시간(초)입니다.
- 총 시도 횟수: 총 트랜잭션 시도 횟수입니다.
- 총 취소 횟수: 트랜잭션의 커밋 메서드를 호출하기 전에 취소한 시도를 포함하여 취소된 총 트랜잭션 시도 횟수입니다.
이러한 값을 설명하는 차트입니다.
또한 평균 참여자 차트에는 각 커밋 시도의 평균 참여자 수가 표시됩니다.
지연 시간을 줄이기 위해 트랜잭션 형태를 최적화할 수 있는지 조사합니다. 잠금 경합을 줄이려면 권장사항을 적용하는 것이 좋습니다.