Real MySQL 책을 읽고 내용을 정리합니다.
tmp_table_size
- 메모리에 생성되는 임시 테이블 크기를 제어하는 설정 값.
- 임시 테이블이 쿼리문, 데이터 등의 문제로 크기가 커져서 메모리가 아닌 디스크에서 생성이 되기 시작하면
디스크 병목, cpu부하가 발생하기 때문에 크게 설정하는 것이 좋다.
sort_buffer_size
- 인덱스를 사용할 수 없는 정렬에 메모리 공간을 얼마나 할당할지 결정하는 설정 값.
- 크기가 커질수록 클라이언트 스레드가 사용하는 메모리의 양이 커져서 메모리 낭비가 심해진다.
join_buffer_size
- 적절한 조건이 없어서 Full Table Scan으로 유도되는 경우에 사용되는 조인 버퍼의 크기를 제어하는 설정 값.
- 인덱스를 추가하는 것이 불가능할 때 해당 값을 증가시키는 것이 좋다.
read_buffer_size
- Full Table Scan, 인덱스 캐싱, 기타 스토리지 엔진 등에서 사용되는 리드 버퍼의 크기를 제어하는 설정 값.
- Full Table Scan이 많으면 크게 설정하는 것이 좋으며, 벤치마킹 테스트 결과에서 128KB가 가장 좋은 성능을 내는 크기
key_buffer_size
- MyISAM에서 사용되는 키 버퍼 캐시의 사이즈 값.
- 인덱스 기반의 검색과 정렬이 주를 이루는 곳에서 이 변수의 값을 늘리면 인덱스 정렬 속도가 더 빨라진다.
read_rnd_buffer_size
- 인덱스 없이 정렬할 때 Two-pass알고리즘을 사용할 때 사용할 버퍼의 크기를 설정하는 설정 값.
- 인덱스 없이 정렬하는 경우가 많고, 정렬 대상 데이터가 큰 경우에만 이 값을 늘리도록 한다.
보통 64KB ~ 128KB 수준으로 설정한다.
query_cache_size
- 쿼리 캐시에 관련된 캐시의 크기를 설정하는 설정 값.
- Qcache_free_memory 가 작고, Qcache_lowmem_prunes 가 증가하는 경우에는 증량을 고려해봐야 한다.
query_cache_limit
- 특정한 크기 미만의 쿼리 결과만 캐시하도록 설정하는 설정 값
- Full Table Scan과 같이 큰 공간이 필요한 결과는 캐시하지 않도록 적정한 캐시 최대 사이즈를 설정한다.
innodb_buffer_pool_size
- Innodb 버퍼 풀의 사이즈를 설정하는 설정 값
- MySQL 5.7부터는 해당 변수가 정적 변수에서 동적 변수로 변경되었기 때문에 크기 조정 시 청크 사이즈 단위로 조정된다.
레퍼런스
Real MySQL
최근댓글