Real MariaDB (2017년)
임시 테이블(Using temporary) 0 0 51,211

by 구루비스터디 MariaDB 최적화 MariaDB 임시 테이블 [2019.08.11]


5.5 임시 테이블(Using temporary)

  1. 임시 테이블이 메모리를 사용시 : MEMORY 스토리지 엔진
  2. 임시 테이블이 디스크 저장시 : Aria 스토리지 엔진


5.5.1 임시 테이블이 필요한 쿼리

  1. ORDER BY와 GRCXJP BY에 명시된 칼럼이 다른 쿼리
  2. ORDER BY나 GROJP BY에 명시된 칼럼이 조인의 순서상 첫 번째 테이블이 아닌 쿼리
  3. DISTINCT와 ORDER BY가 동시에 쿼리에 존재하는 경우 또는 DISTINCT가 인덱스로 처리되지 못하는 쿼리
  4. UNION이나 UNION 이STINCT가사용된쿼리(select_type 칼럼이 UNION RESULT인 경우)
  5. UNION ALL이 사용된 쿼리(select_type 칼럼이 UNION RESULT인 경우)
  6. 쿼리의 실행 계획에서 select_type이 DERIVED인 쿼리


5.5.2 임시 테이블이 디스크에 생성되는 경우(Aria 스토리지 엔진을 사용)

  1. 임시 테이블에 저장해야 하는 내용 중 BLOB(Binary Large Object)나 TEXT와 같은 대용량 칼럼이 있는 경우
  2. 임시 테이블에 저장해야 하는 레코드의 전체 크기나 UNION이나 UNION ALL에서 SELECT되는 칼럼 중에서 길이가 512바이트 이상인 크기의 칼럼이 있는 경우
  3. GROUP BY나 DISTINCT 칼럼에서 512바이트 이상인 크기의 칼럼이 있는 경우
  4. 임시 테이블에 저장할 데이터의 전체 크기(데이터의 바이트 크기)가 tmp_table_size 또는 max_heap_table_size 시스템 설정 값보다 큰 경우
  5. 자세히 되어 있지만 결국 데이터가 크면 디스크에 생성된다는 것이다. 단, 4번처럼 초기 데이터가 크지 않으면 처음엔 메모리에 생성된다.


5.5.3 임시 테이블 관련 상태 변수


  1. Created_tmp_tables 메모리, 디스크 임시 테이블 모두 누적한 값.
  2. Created_tmp_disk_tables 디스크 임시 테이블 누적 값.


5.5.4 인덱스를 가지는 내부 임시 테이블


5.5.5 내부 임시 테이블(Internal Temporary Table)의 주의사항


  • 인덱스를 활용하려 노력하고 대상 레코드를 적게 만들자.


"구루비 데이터베이스 스터디모임" 에서 2017년에 "Real MariaDB" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4194

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입