

# 데이터베이스가 디스크에 임시 테이블을 만들고 있음
<a name="proactive-insights.temp-tables"></a>

최근 온디스크 임시 테이블 사용량이 최대 *백분율*까지 크게 증가했습니다. 데이터베이스는 초당 약 *개수*의 임시 테이블을 생성하고 있습니다. 이는 성능에 영향을 미치고 *db-instance*의 디스크 작업을 증가시킬 수 있습니다.

**Topics**
+ [지원되는 엔진 버전](#proactive-insights.temp-tables.context.supported)
+ [컨텍스트](#proactive-insights.temp-tables.context)
+ [이 문제의 잠재적 원인](#proactive-insights.temp-tables.causes)
+ [작업](#proactive-insights.temp-tables.actions)
+ [관련 지표](#proactive-insights.temp-tables.metrics)

## 지원되는 엔진 버전
<a name="proactive-insights.temp-tables.context.supported"></a>

이 인사이트 정보는 Aurora MySQL의 모든 버전에서 지원됩니다.

## 컨텍스트
<a name="proactive-insights.temp-tables.context"></a>

MySQL 서버가 쿼리를 처리하는 동안 내부 임시 테이블을 만들어야 하는 경우가 있습니다. Aurora MySQL은 내부 임시 테이블을 메모리에 보관할 수 있으며, 이 메모리는 TempTable 또는 MEMORY 스토리지 엔진에서 처리되거나 InnoDB에 의해 디스크에 저장될 수 있습니다. 자세한 내용은 MySQL *참조 설명서의* [MySQL의 내부 임시 테이블 사용](https://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.html)을 참조하세요.

## 이 문제의 잠재적 원인
<a name="proactive-insights.temp-tables.causes"></a>

온디스크 임시 테이블의 증가는 복잡한 쿼리를 사용함을 나타냅니다. 구성된 메모리가 메모리에 임시 테이블을 저장하기에 충분하지 않은 경우 Aurora MySQL이 디스크에 테이블을 생성합니다. 이는 성능에 영향을 미치고 디스크 작업을 증가시킬 수 있습니다.

## 작업
<a name="proactive-insights.temp-tables.actions"></a>

인사이트의 원인에 따라 다른 조치를 취할 것을 권장합니다.
+ Aurora MySQL 버전 3의 경우 TempTable 스토리지 엔진을 사용하는 것이 좋습니다.
+ 필요한 열만 선택하여 반환되는 데이터가 적도록 쿼리를 최적화합니다.

  모든 `statement` 도구가 활성화되고 시간이 설정된 상태에서 성능 스키마를 켜면 `SYS.statements_with_temp_tables`를 쿼리하여 임시 테이블을 사용하는 쿼리 목록을 검색할 수 있습니다. 자세한 내용은 MySQL 설명서의 [sys 스키마 사용 전제 조건](https://dev.mysql.com/doc/refman/8.0/en/sys-schema-prerequisites.html)을 참조하세요.
+ 정렬 및 그룹화 작업과 관련된 열을 인덱싱하는 것을 고려해 보세요.
+ `BLOB` 및 `TEXT` 열을 피하여 쿼리를 다시 작성합니다. 해당 열은 항상 디스크를 사용합니다.
+ `tmp_table_size` 및 `max_heap_table_size` 데이터베이스 파라미터를 튜닝합니다.

  이러한 파라미터의 기본값은 16MiB입니다. 메모리 내 임시 테이블에 MEMORY 스토리지 엔진을 사용하는 경우 최대 크기는 `tmp_table_size` 또는 `max_heap_table_size` 값 중 더 작은 값으로 정의됩니다. 이 최대 크기에 도달하면 MySQL는 메모리 내 내부 임시 테이블을 InnoDB 온디스크 내부 임시 테이블로 자동 변환합니다. 자세한 내용은 [Amazon RDS for MySQL 및 Amazon Aurora MySQL의 TempTable 스토리지 엔진 사용](https://aws.amazon.com/blogs/database/use-the-temptable-storage-engine-on-amazon-rds-for-mysql-and-amazon-aurora-mysql/)을 참조하세요.
**참고**  
CREATE TABLE을 사용하여 MEMORY 테이블을 명시적으로 만들 때는 `max_heap_table_size` 변수만이 테이블의 최대 크기를 결정합니다. 온디스크 형식으로의 변환도 없습니다.

## 관련 지표
<a name="proactive-insights.temp-tables.metrics"></a>

이 인사이트와 관련된 성능 개선 도우미 지표는 다음과 같습니다.
+ Created\$1tmp\$1disk\$1tables
+ Created\$1tmp\$1tables

자세한 내용은 MySQL 설명서에서 [Created\$1tmp\$1disk\$1tables](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html#statvar_Created_tmp_disk_tables)를 참조하세요.