

# Amazon Aurora MySQL의 개요
<a name="Aurora.AuroraMySQL.Overview"></a>

다음 단원에는 Amazon Aurora MySQL의 개요가 나와 있습니다.

**Topics**
+ [Amazon Aurora MySQL 성능 개선 사항](#Aurora.AuroraMySQL.Performance)
+ [Amazon Aurora MySQL 및 지형 정보 데이터](#Aurora.AuroraMySQL.Spatial)
+ [Aurora MySQL 버전 3은 MySQL 8.0과 호환](AuroraMySQL.MySQL80.md)
+ [Aurora MySQL 버전 2는 MySQL 5.7과 호환](AuroraMySQL.CompareMySQL57.md)

## Amazon Aurora MySQL 성능 개선 사항
<a name="Aurora.AuroraMySQL.Performance"></a>

Amazon Aurora에는 고급 상용 데이터베이스의 다양한 필요를 지원하는 성능 향상이 포함되어 있습니다.

### 빠른 입력 기능
<a name="Aurora.AuroraMySQL.Performance.FastInsert"></a>

빠른 입력 기능은 기본 키에 의해 정렬되는 병렬 입력을 빠르게 처리해 주며, 특히 `LOAD DATA` 및 `INSERT INTO ... SELECT ...` 문 사용 시 유용합니다. 빠른 입력 기능은 문을 실행할 때 인덱스 순회에서 커서의 위치를 캐싱합니다. 이에 따라 인덱스를 불필요하게 다시 순회하지 않도록 해줍니다.

빠른 입력은 Aurora MySQL 버전 3.03.2 이상에서 일반 InnoDB 테이블에 대해서만 활성화됩니다. InnoDB 임시 테이블에서는 이 최적화가 작동하지 않습니다. Aurora MySQL 버전 2에서는 2.11 및 2.12 버전 모두 비활성화되어 있습니다. 빠른 입력 최적화는 적응형 해시 인덱스 최적화가 비활성화된 경우에만 작동합니다.

다음 측정치를 모니터링하면 DB 클러스터에서 빠른 입력 기능의 효과를 확인할 수 있습니다.
+ `aurora_fast_insert_cache_hits`: 캐싱된 커서가 성공적으로 검색 및 확인되면 증가하는 카운터입니다.
+ `aurora_fast_insert_cache_misses`: 캐싱된 커서가 더 이상 유효하지 않고 Aurora가 정상적인 인덱스 순회를 수행하면 증가하는 카운터입니다.

다음 명령을 사용하면 빠른 입력 측정치의 현재 값을 검색할 수 있습니다.

```
mysql> show global status like 'Aurora_fast_insert%';
```

출력은 다음과 비슷합니다.

```
+---------------------------------+-----------+
| Variable_name                   | Value     |
+---------------------------------+-----------+
| Aurora_fast_insert_cache_hits   | 3598300   |
| Aurora_fast_insert_cache_misses | 436401336 |
+---------------------------------+-----------+
```

## Amazon Aurora MySQL 및 지형 정보 데이터
<a name="Aurora.AuroraMySQL.Spatial"></a>

다음 목록은 기본 Aurora MySQL 공간 기능을 요약한 것으로서 해당 기능이 MySQL의 공간 기능에 어떻게 상응하는지 설명합니다.
+ Aurora MySQL 버전 2는 MySQL 5.7과 동일한 공간 데이터 유형 및 공간 관계 기능을 지원합니다. 이러한 데이터 유형 및 기능에 대한 자세한 내용은 MySQL 5.7 설명서의 [공간 데이터 유형](https://dev.mysql.com/doc/refman/5.7/en/spatial-types.html) 및 [공간 관계 기능](https://dev.mysql.com/doc/refman/5.7/en/spatial-relation-functions-object-shapes.html)을 참조하세요.
+ Aurora MySQL 버전 3은 MySQL 8.0과 동일한 공간 데이터 유형 및 공간 관계 기능을 지원합니다. 이러한 데이터 유형 및 기능에 대한 자세한 내용은 MySQL 8.0 설명서의 [공간 데이터 유형](https://dev.mysql.com/doc/refman/8.0/en/spatial-types.html) 및 [공간 관계 기능](https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html)을 참조하세요.
+ Aurora MySQL은 InnoDB 테이블에서 공간 인덱싱 기능을 지원합니다. 이 기능을 사용하면 공간 데이터에 대한 쿼리를 위해 대규모 데이터 세트에 대한 쿼리 성능을 향상시킬 수 있습니다. MySQL의 경우 MySQL 5.7과 8.0에서 InnoDB 테이블에 대한 공간 인덱싱 기능이 제공됩니다.

  Aurora MySQL은 공간 쿼리 시 성능을 높이기 위해 MySQL과는 다른 공간 인덱싱 전략을 사용합니다. Aurora 공간 인덱스 구현에서는 R-트리보다 나은 공간 범위 스캔 성능을 제공하기 위해 B-트리에서 공간 채움 곡선을 사용합니다.
**참고**  
Aurora MySQL에서는 SRID(공간 참조 식별자)가 있는 열에 공간 인덱스가 정의된 테이블의 트랜잭션은 다른 트랜잭션에서 업데이트할 수 있도록 선택한 영역에 삽입할 수 없습니다.

다음 데이터 정의 언어(DDL) 문은 공간 데이터 유형을 사용하는 열에 인덱스를 생성할 목적으로 지원됩니다.

### 테이블 생성
<a name="Aurora.AuroraMySQL.Spatial.create_table"></a>

`SPATIAL INDEX` 문에서 `CREATE TABLE` 키워드를 사용하여 새 테이블의 열에 공간 인덱스를 추가할 수 있습니다. 다음은 그 한 예입니다.

```
CREATE TABLE test (shape POLYGON NOT NULL, SPATIAL INDEX(shape));
```

### 테이블 변경
<a name="Aurora.AuroraMySQL.Spatial.alter_table"></a>

`SPATIAL INDEX` 문에서 `ALTER TABLE` 키워드를 사용하여 기존 테이블의 열에 공간 인덱스를 추가할 수 있습니다. 다음은 그 한 예입니다.

```
ALTER TABLE test ADD SPATIAL INDEX(shape);
```

### 인덱스 생성
<a name="Aurora.AuroraMySQL.Spatial.create_index"></a>

`SPATIAL` 문에서 `CREATE INDEX` 키워드를 사용하여 기존 테이블의 열에 공간 인덱스를 추가할 수 있습니다. 다음은 한 예입니다.

```
CREATE SPATIAL INDEX shape_index ON test (shape);
```