• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    1. 데이터 크기 최적화
    2. MySQL 데이터 형의 최적화
    3. 여러 테이블의 최적화
    4. MySQL이 내부 임시 테​​이블을 사용하는 방법
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.4.4 MySQL이 내부 임시 테​​이블을 사용하는 방법

경우에 따라 서버가 쿼리를 처리하는 동안 내부 임시 테​​이블을 만듭니다. 그 테이블은 메모리에 유지하여 MEMORY 스토리지 엔진에 의해 처리하거나 디스크에 저장하여 MyISAM 스토리지 엔진에 의해 처리 할 수 있습니다. 서버는 처음 인 메모리 테이블로 내부에서 임시 테​​이블을 만들고이 너무 커질 경우에 그것을 디스크 테이블로 변환 할 수 있습니다. 서버가 내부 임시 테​​이블을 생성하는 타이밍이나 서버가 그것을 관리하기 위해 어떤 스토리지 엔진을 사용하는지에 대해 사용자가 직접 제어 할 수 없습니다.

임시 테이블은 다음과 같은 조건에서 생성 될 수 있습니다.

  • UNION 쿼리가 임시 테이블을 사용합니다.

  • TEMPTABLE 알고리즘을 사용하여 평가하는 것이나, UNION 또는 집합을 사용하는 등 일부 뷰에서 임시 테이블을 필요로합니다.

  • ORDER BY 절과 다른 GROUP BY 절이있는 경우 또는 ORDER BY 또는 GROUP BY 에 결합 큐의 첫 번째 테이블과 다른 테이블의 컬럼이 포함되어있는 경우, 임시 테이블이 만들어집니다.

  • DISTINCT 와 ORDER BY 함께 임시 테이블이 필요할 수 있습니다.

  • SQL_SMALL_RESULT 옵션을 사용하면 MySQL은 쿼리에 디스크 스토리지를 필요로하는 요소 (아래)도 포함되어 있지 않은 한, 인 메모리 임시 테이블이 사용됩니다.

  • 여러 테이블 UPDATE 문.

  • GROUP_CONCAT() 또는 COUNT(DISTINCT) 평가.

  • 파생 테이블 ( FROM 절의 서브 쿼리).

  • 서브 쿼리 또는 준 결합 실체화를 위해 작성되는 테이블.

쿼리에서 임시 테이블을 필요로하는지 여부를 판단하려면, EXPLAIN 을 사용하고 Extra 컬럼들을 체크하여 거기 Using temporary 지명되어 있는지 확인합니다 ( 섹션 8.8.1 "EXPLAIN에 따르면 쿼리 최적화 " 를 참조하십시오). EXPLAIN 에서 파생되거나 구체화 된 임시 테이블에 대해 반드시 Using temporary 표시하지 않을 수 있습니다.

내부 임시 테​​이블이 먼저 인 메모리 테이블로 작성된 이것이 너무 커질 경우 MySQL은이를 자동으로 디스크 테이블로 변환합니다. 인 메모리 임시 테이블의 최대 크기는 tmp_table_size 와 max_heap_table_size 의 최소치입니다. 이것은 CREATE TABLE 에 의해 명시 적으로 작성된 MEMORY 테이블과 다릅니다. 그런 테이블의 경우 max_heap_table_size 시스템 변수에서만 테이블이 얼마나 확대 할 디스크 포맷으로 변환이없는 것으로 판단됩니다.

서버는 내부 임시 테이블 (메모리 또는 디스크 중 하나)를 작성하면 Created_tmp_tables 상태 변수를 증가시킵니다. 서버는 디스크에 테이블 만들기 (내부 또는 인 메모리 테이블을 변환하는 경우) Created_tmp_disk_tables 상태 변수를 증가시킵니다.

상황에 따라서는 인 메모리 임시 테​​이블의 사용을 방해 할 수 있으며,이 경우 서버는 대신 디스크 테이블을 사용합니다.

  • 테이블에 BLOB 또는 TEXT 컬럼의 존재

  • GROUP BY 또는 DISTINCT 절에서 이진 문자열의 경우 512 바이트 또는 비 이진 문자열의 경우 512 문자보다 큰 문자열 컬럼의 존재. (MySQL 5.6.15 이전이 제한은 문자열의 형식에 관계없이 512 바이트입니다.)

  • UNION 또는 UNION ALL 이 사용 된 경우 SELECT 목록에서 512 (이진 문자열의 경우 바이트가 아닌 바이너리 문자열의 경우는 문자)보다 큰 최대 길이를 가진 문자열 컬럼의 존재.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved