Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 max_heap_table_size 값 확인 및 변경하는 방법

max_heap_table_size는 MySQL의 시스템 변수로, 읽기와 쓰기가 모두 가능한(read/write) 속성을 가지고 있습니다. 이 변수는 MEMORY(HEAP) 테이블의 최대 크기를 제어하며, 기본값은 16MB입니다.

현재 max_heap_table_size 값 확인하기

먼저 현재 설정된 max_heap_table_size 값을 확인해 보겠습니다. 이 값은 바이트(byte) 단위로 저장됩니다. 다음 쿼리를 사용합니다.

mysql> select @@max_heap_table_size;

실행 결과는 다음과 같습니다.

+-----------------------+
| @@max_heap_table_size |
+-----------------------+
| 16777216              |
+-----------------------+
1 row in set (0.00 sec)

바이트를 MB로 변환하는 방법

조회된 값 16777216이 실제로 16MB에 해당하는지 단위 변환을 통해 확인해 보겠습니다.

1 MB = 1024KB
1KB = 1024 Bytes
1MB = 1024 × 1024 bytes = 1,048,576 bytes

따라서 바이트 값을 MB로 변환하려면 1,048,576으로 나누면 됩니다.

= 16777216 / (1024 × 1024)
= 16777216 / 1048576
= 16 MB

SET 명령어로 max_heap_table_size 변경하기

max_heap_table_size 값은 SET 명령어를 사용하여 변경할 수 있습니다. 기본 문법은 다음과 같습니다.

SET @@max_heap_table_size = 원하는_바이트_값;

이번에는 값을 33554432 바이트, 즉 32MB로 변경해 보겠습니다.

mysql> set @@max_heap_table_size=33554432;
Query OK, 0 rows affected (0.00 sec)

변경된 값 검증하기

변경 후 다시 값을 조회하여 정상적으로 적용되었는지 확인합니다.

mysql> select @@max_heap_table_size;

실행 결과는 다음과 같습니다.

+-----------------------+
| @@max_heap_table_size |
+-----------------------+
| 33554432              |
+-----------------------+
1 row in set (0.00 sec)

앞서 설명한 변환 공식을 활용하면 더욱 간편하게 MB 단위로 확인할 수 있습니다. 나누기 연산 결과에 별칭(alias)을 지정하여 조회해 보겠습니다.

mysql> select @@max_heap_table_size/1048576 as MB;

실행 결과는 다음과 같습니다.

+---------+
| MB      |
+---------+
| 32.0000 |
+---------+
1 row in set (0.00 sec)

결과가 정확히 32MB로 출력되는 것을 확인할 수 있습니다.

참고 사항

SET 명령어로 변경한 max_heap_table_size 값은 현재 세션 또는 전역(global) 범위에만 적용되며, MySQL 서버를 재시작하면 기본값으로 초기화됩니다. 영구적으로 값을 유지하려면 MySQL 설정 파일(my.cnf 또는 my.ini)에 다음과 같이 추가해야 합니다.

[mysqld]
max_heap_table_size = 33554432

또한 MEMORY 테이블의 실제 최대 크기는 max_heap_table_size와 tmp_table_size 중 더 작은 값에 따라 결정되므로, 두 변수를 함께 고려하여 설정하는 것이 좋습니다.