[MySQL 운영]/MySQL Tip

tmp_table_size 와 max_heap_table_size 차이

JJ* 2021. 1. 29. 14:58

** max_heap_table_size

 : 사용자가 생성한 memory 테이블이 증가할 수 있는 최대 크기 (내부적으로 생성된 임시테이블도 포함)

  - 사용자가 명시적으로 생성한 memory 테이블은 max_heap_table_size로만 크기를 결정하고, 온디스크 형식으로 변환되지 않음

  - 복제 되지 않음

 

** tmp_table_size

 : 내부 메모리 내 임시 테이블 최대 크기 (온디스크 임시테이블은 제외)

  - 사용자가 만든 memory 테이블에는 적용되지 않음.

  - group by 를 사용한 쿼리가 많고, 메모리 여유가 많으면, max_heap_table_size와 같이 증가시킨다.

 

** 특이사항

  - 실제 limit는 두 값 중 더 적은 값으로 제한되므로, 두 변수 모두 동일/유사하게 설정한다.

  - 만약 내부 메모리 임시 테이블이 limit를 초과하면, mysql은 자동으로 온디스크 임시 테이블로 변환한다. (MyISAM테이블로 변환됨)

** 임시 테이블

- union, subquery, distinct + order by , insert..select… 등

- explain의 extra 에 using temporary가 써있으면, 임시테이블이 필요 한 것!

 

 

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_sort_buffer_size

https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html