이 페이지에서는 Cloud SQL 데이터베이스 연결을 효과적으로 사용하는 애플리케이션을 만드는 데 도움이 되는 권장사항과 언어별 코드 샘플을 제공합니다.
이 샘플은 GitHub에서 제공하는 완전한 웹 애플리케이션에서 발췌하였습니다. 자세히 알아보기
Cloud SQL에 연결된 샘플 웹 애플리케이션을 실행하는 방법에 대한 단계별 안내를 확인하려면 사용 중인 환경에 해당하는 링크로 이동하세요.
- 빠른 시작: 로컬 컴퓨터에서 연결
- 빠른 시작: Compute Engine에서 연결
- 빠른 시작: Cloud Run에서 연결
- 빠른 시작: Cloud Run 함수에서 연결
- 빠른 시작: Google Kubernetes Engine에서 연결
연결 풀
연결 풀이란 연결 지연 시간 및 성능의 개선을 위해 공유 및 재사용되는 데이터베이스 연결의 캐시를 의미합니다. 애플리케이션에서 데이터베이스 연결이 필요하면 풀에서 임시로 하나를 빌려오고 연결이 필요 없어지면 연결을 풀에 반환합니다. 이 연결은 다음에 애플리케이션에서 데이터베이스 연결이 필요할 때 재사용될 수 있습니다.
연결 열기 및 닫기
연결 풀을 사용할 때는 연결을 제대로 열고 닫아야 합니다. 그래야 사용을 마쳤을 때 항상 연결이 풀로 반환됩니다. 반환되지 않거나 '유출'된 연결은 재사용되지 않으므로 리소스가 낭비되고 애플리케이션에서 성능 병목 현상이 발생할 수 있습니다.
Python
자바
Node.js
C#
Go
Ruby
PHP
연결 수
모든 데이터베이스 연결은 클라이언트 및 서버 측 리소스를 사용합니다. 게다가 Cloud SQL에서는 초과하면 안 되는 전체 연결 한도를 부과합니다. 연결을 적게 만들어 사용하면 오버헤드를 줄이고 연결 한도를 유지하는 데 도움이 됩니다.
지수 백오프
애플리케이션에서 데이터베이스 연결을 시도하지만 성공하지 못할 경우 데이터베이스를 일시적으로 사용하지 못할 수 있습니다. 이 경우 반복 연결 요청을 보내면 리소스가 낭비됩니다. 데이터베이스에 다시 액세스할 수 있도록 하려면 추가 연결 요청을 보내기 전에 기다리는 것이 좋습니다. 지수 백오프 또는 기타 지연 메커니즘을 사용하여 이 목표를 달성할 수 있습니다.
이 재시도는 처음 연결하거나 풀에서 처음 연결할 때만 의미가 있습니다. 트랜잭션 도중에 오류가 발생하면 애플리케이션에서 트랜잭션 시작부터 재시도해야 합니다. 따라서 풀이 올바르게 구성되어 있어도 연결이 끊어지면 애플리케이션에 오류가 표시될 수 있습니다.
Python
자바
Node.js
C#
Go
database/sql 패키지는 지수 백오프를 구성하는 기능을 현재 제공하지 않습니다.
Ruby
PHP
PDO는 지수 백오프를 구성하는 기능을 현재 제공하지 않습니다.
연결 시간 초과
연결 시도가 성공하지 못하는 데에는 여러 가지 이유가 있습니다. 네트워크 통신이 항상 보장되는 것은 아니며 데이터베이스가 일시적으로 응답하지 못할 수도 있습니다. 끊겼거나 실패한 연결을 애플리케이션에서 적절하게 처리해야 합니다.
Python
자바
Node.js
C#
Go
database/sql 패키지는 연결 제한 시간을 구성하는 기능을 현재 제공하지 않습니다. 제한 시간은 드라이버 수준에서 구성됩니다.
Ruby
PHP
연결 기간
연결 수명을 제한하면 이탈한 연결이 누적되는 것을 막을 수 있습니다. 연결 수명은 연결 풀을 사용해 제한할 수 있습니다.
Python
자바
Node.js
현재 'node-mssql' Node.js 라이브러리는 연결 지속 시간을 제어할 수 있는 함수를 제공하지 않습니다.
C#
Go
Ruby
ActiveRecord는 연결 기간을 제어하는 기능을 현재 제공하지 않습니다.
PHP
PDO는 연결 기간을 제어하는 기능을 현재 제공하지 않습니다.
완전한 애플리케이션 보기
완전한 애플리케이션을 보려면 아래 링크를 클릭하세요.
Python
Python 프로그래밍 언어로 빌드된 완전한 애플리케이션을 확인하세요.
Node.js
Node.js 프로그래밍 언어로 빌드된 완전한 애플리케이션을 확인하세요.
C#
C# 프로그래밍 언어로 빌드된 완전한 애플리케이션을 확인하세요.
Go
Go 프로그래밍 언어로 빌드된 완전한 애플리케이션을 확인하세요.
PHP
PHP 프로그래밍 언어로 빌드된 완전한 애플리케이션을 확인하세요.