

# Aurora DSQL의 프라이머리 키
<a name="working-with-primary-keys"></a>

Aurora DSQL에서 프라이머리 키는 테이블 데이터를 물리적으로 구성하는 기능입니다. PostgreSQL의 `CLUSTER` 작업 또는 다른 데이터베이스의 클러스터링된 인덱스와 유사합니다. 프라이머리 키를 정의하면 Aurora DSQL은 테이블의 모든 열을 포함하는 인덱스를 생성합니다. Aurora DSQL의 프라이머리 키 구조는 효율적인 데이터 액세스 및 관리를 보장합니다.

## 데이터 구조 및 스토리지
<a name="dsql-primary-key-storage"></a>

프라이머리 키를 정의하면 Aurora DSQL은 프라이머리 키 순서로 테이블 데이터를 저장합니다. 이 인덱스 구성 구조를 사용하면 프라이머리 키 조회가 기존 B-트리 인덱스에서처럼 데이터에 대한 포인터를 따르는 대신 모든 열 값을 직접 검색할 수 있습니다. 데이터를 한 번만 재구성하는 PostgreSQL의 `CLUSTER` 작업과 달리 Aurora DSQL은 이 순서를 자동으로 지속적으로 유지합니다. 이 접근 방식은 프라이머리 키 액세스에 의존하는 쿼리의 성능을 개선합니다.

또한 Aurora DSQL은 프라이머리 키를 사용하여 테이블 및 인덱스의 각 행에 대한 클러스터 전체 고유 키를 생성합니다. 이 고유 키는 분산 데이터 관리도 뒷받침합니다. 이를 통해 여러 노드에서 데이터를 자동으로 파티셔닝하여 확장 가능한 스토리지와 높은 동시성을 지원할 수 있습니다. 따라서 프라이머리 키 구조는 Aurora DSQL이 자동으로 규모 조정되고 동시 워크로드를 효율적으로 관리하는 데 도움이 됩니다.

## 프라이머리 키 선택 지침
<a name="dsql-primary-key-guidelines"></a>

Aurora DSQL에서 프라이머리 키를 선택하고 사용할 때는 다음 지침을 고려하세요.
+ 테이블을 생성할 때 프라이머리 키를 정의합니다. 나중에 이 키를 변경하거나 새 프라이머리 키를 추가할 수 없습니다. 프라이머리 키는 데이터 파티셔닝 및 쓰기 처리량의 자동 규모 조정에 사용되는 클러스터 전체 키의 일부가 됩니다. 프라이머리 키를 지정하지 않으면 Aurora DSQL이 합성 숨김 ID를 할당합니다.
+ 쓰기 볼륨이 많은 테이블의 경우 단조롭게 증가하는 정수를 프라이머리 키로 사용하지 마세요. 그럴 경우 모든 새 삽입을 단일 파티션으로 전달하여 성능 문제가 발생할 수 있습니다. 대신 임의의 분산이 있는 프라이머리 키를 사용하여 스토리지 파티션 간에 쓰기를 고르게 분산할 수 있습니다.
+ 자주 변경되지 않거나 읽기 전용인 테이블의 경우 오름차순 키를 사용할 수 있습니다. 오름차순 키의 예로는 타임스탬프 또는 시퀀스 번호가 있습니다. 밀집 키에는 밀접하게 이격되거나 중복된 값이 많습니다. 쓰기 성능이 덜 중요하기 때문에 밀도가 높더라도 오름차순 키를 사용할 수 있습니다.
+ 전체 테이블 스캔이 성능 요구 사항을 충족하지 않는 경우 더 효율적인 액세스 방법을 선택합니다. 대부분의 경우 이는 쿼리에서 가장 일반적인 조인 및 조회 키와 일치하는 프라이머리 키를 사용하는 것을 의미합니다.
+ 프라이머리 키에 있는 열의 최대 결합 크기는 1KiB입니다. 자세한 내용은 [Aurora DSQL의 데이터베이스 한도](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html#SECTION_database-limits) 및 [Aurora DSQL에서 지원되는 데이터 유형](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-data-types)을 참조하세요.
+ 프라이머리 키 또는 보조 인덱스에 최대 8개의 열을 포함할 수 있습니다. 자세한 내용은 [Aurora DSQL의 데이터베이스 한도](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html#SECTION_database-limits) 및 [Aurora DSQL에서 지원되는 데이터 유형](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-postgresql-compatibility-supported-data-types)을 참조하세요.