데이터베이스 성능 최적화

Last reviewed 2023-08-06 UTC

Google Cloud 아키텍처 프레임워크의 이 문서에서는 Google Cloud에서 데이터베이스의 성능을 최적화하는 데 도움이 되는 권장사항을 제공합니다.

Cloud SQL

다음 권장사항은 SQL Server, MySQL, PostgreSQL 데이터베이스를 실행하는 Cloud SQL 인스턴스의 성능을 최적화하는 데 도움이 됩니다.

자세한 내용은 다음 문서를 참조하세요.

Bigtable

이 섹션에서는 Bigtable 인스턴스 성능을 최적화하는 데 도움이 되는 권장사항을 제공합니다.

성능 요구사항을 기반으로 용량 계획

각각 서로 다른 최적화 목표가 있는 광범위한 애플리케이션에서 Bigtable을 사용할 수 있습니다. 예를 들어 일괄 데이터 처리 작업의 경우 처리량이 지연 시간보다 더 중요할 수 있습니다. 사용자 요청을 지원하는 온라인 서비스의 경우 처리량보다 낮은 지연시간을 우선시해야 할 수 있습니다. Bigtable 클러스터의 용량을 계획할 때는 처리량과 지연 시간 간의 균형점을 고려해야 합니다. 자세한 내용은 Bigtable 용량 계획을 참조하세요.

스키마 설계 권장사항 수행

테이블을 수십억 개의 행과 수천 개의 열로 확장하여 페타바이트 단위로 데이터를 저장할 수 있습니다. Bigtable 테이블의 스키마를 디자인할 때는 스키마 설계 권장사항을 고려합니다.

성능 모니터링 및 조정

인스턴스의 CPU 및 디스크 사용량을 모니터링하고, 각 클러스터의 성능을 분석하고, 모니터링 차트에 표시되는 크기 권장사항을 검토합니다.

Spanner

이 섹션에서는 Spanner 인스턴스 성능을 최적화하는 데 도움이 되는 권장사항을 제공합니다.

핫스팟을 방지하는 기본 키 선택

핫스팟은 여러 요청을 강제로 처리하는 단일 서버입니다. 데이터베이스의 기본 키를 선택할 때는 핫스팟 방지를 위해 스키마 설계 권장사항을 따릅니다.

SQL 코딩 권장사항 수행

Spanner의 SQL 컴파일러는 사용자가 작성하는 각 선언적 SQL 문을 필수 쿼리 실행 계획으로 변환합니다. Spanner는 실행 계획을 사용하여 SQL 문을 실행합니다. SQL 문을 생성할 때는 SQL 권장사항에 따라 Spanner에 최적 성능을 제공하는 실행 계획이 사용되도록 합니다.

쿼리 옵션을 사용하여 SQL 쿼리 옵티마이저 관리

Spanner는 SQL 쿼리 옵티마이저를 사용하여 SQL 문을 효율적인 쿼리 실행 계획으로 변환합니다. 옵티마이저가 생성하는 쿼리 실행 계획은 쿼리 옵티마이저가 자체적으로 진화할 때 또는 데이터베이스 통계가 업데이트될 때 약간 변경될 수 있습니다. 쿼리 옵션을 사용하여 쿼리 옵티마이저 또는 데이터베이스 통계가 변경될 때 성능 회귀 가능성을 최소화할 수 있습니다.

쿼리 실행 계획 구조 시각화 및 조정

쿼리 성능 문제를 분석하려면 쿼리 계획 시각화 도구를 사용하여 쿼리 실행 계획의 구조를 시각화하고 조정할 수 있습니다.

작업 API를 사용하여 장기 실행 작업 관리

특정 메서드 호출의 경우 Spanner가 완료하는 데 상당 시간이 걸릴 수 있는 장기 실행 작업을 만듭니다. 예를 들어 데이터베이스를 복원할 때 Spanner는 복원 진행률을 추적하는 장기 실행 작업을 만듭니다. 장기 실행 작업의 모니터링 및 관리를 돕기 위해 Spanner에서는 작업 API가 제공됩니다. 자세한 내용은 장기 실행 작업 관리를 참조하세요.

일괄 로드 권장사항 수행

Spanner는 대용량 데이터를 일괄 로드하는 몇 가지 옵션을 제공합니다. 일괄 로드 작업의 성능은 파티션 나누기, 쓰기 요청 수, 각 요청의 크기와 같은 요인에 따라 달라집니다. 대량의 데이터를 효율적으로 로드하려면 일괄 로드 권장사항을 따르세요.

CPU 사용률 모니터링 및 제어

Spanner 인스턴스의 CPU 사용률은 요청 지연 시간에 영향을 줄 수 있습니다. 과부하된 백엔드 서버는 높은 요청 지연 시간을 일으킬 수 있습니다. Spanner는 높은 CPU 사용률 조사를 돕기 위해 CPU 사용률 측정항목을 제공합니다. 성능에 민감한 애플리케이션의 경우 educe컴퓨팅 용량을 늘려서 CPU 사용률을 줄여야할 수 있습니다.

지연 시간 문제 분석 및 해결

클라이언트가 Spanner에 리모트 프로시져 콜을 수행하면 클라이언트 라이브러리에서 먼저 API 요청이 준비됩니다. 그런 후 요청이 Google 프런트엔드 및 Cloud Spanner API 프런트엔드를 통과하여 Spanner 데이터베이스에 도달합니다. 지연 시간 문제를 분석하고 해결하려면 API 요청이 통과하는 경로의 각 세그먼트에 대해 지연 시간을 측정 및 분석해야 합니다. 자세한 내용은 Spanner 엔드 투 엔드 가이드를 참조하세요.

데이터베이스가 웜 상태에 도달한 후 애플리케이션 실행

Spanner 데이터베이스 확장에 따라 데이터의 키 공간을 분할로 나눕니다. 각 분할은 테이블의 하위 집합이 포함된 행 범위입니다. 데이터베이스에서 전체 부하를 균형 조정하기 위해 Spanner는 개별 분할을 동적으로 개별적으로 이동하고 이를 서로 다른 서버에 할당합니다. 분할이 여러 서버에 분산되면 데이터베이스가 상태로 고려됩니다. 웜이 동시 로드를 극대화하고 향상된 성능을 제공할 수 있는 데이터베이스입니다. 애플리케이션을 실행하기 전 테스트 데이터 부하를 사용해서 데이터베이스를 준비하는 것이 좋습니다.

다음 단계

컴퓨팅, 스토리지, 네트워킹, 분석 리소스의 성능 최적화를 위한 권장사항 검토: