개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.24 02:38

--max_heap_table_size와 MySQL의 메모리 관리

목록
  • 코딩테스트러버 1일 전 2025.06.24 02:38
  • 4
    1
제가 MySQL에서 --max_heap_table_size 옵션을 사용하여 메모리 제한을 설정했는데, 이 옵션은 실제로 메모리 사용량에 영향을 미치는지 궁금합니다.

제가 현재 MySQL 서버에서 다음과 같은 설정을 사용하고 있습니다.

sql

[mysqld]

max_heap_table_size = 64M



이 옵션을 설정한 후, MySQL 서버에 다음과 같은 쿼리를 실행했을 때, 메모리 사용량은 실제로 64M로 제한되는 것이 맞는지 궁금합니다.

sql

CREATE TABLE test (

  id INT PRIMARY KEY,

  name VARCHAR(255)

) ENGINE=MEMORY;

INSERT INTO test (id, name) VALUES (1, 'test');



MySQL 서버의 메모리 사용량을 확인한 후, 다시 쿼리를 실행했을 때, 메모리 사용량이 이전과 동일한지 궁금합니다.

sql

SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_bytes_data';



위의 쿼리를 실행했을 때, 메모리 사용량이 제대로 제한되는지 확인하고 싶습니다.

--max_heap_table_size 옵션의 정확한 동작 방식과 MySQL 서버의 메모리 관리에 대한 설명을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    --max_heap_table_size 옵션은 MySQL 서버에서 MEMORY 엔진이 사용하는 최대 힙 테이블 크기를 설정합니다. 이 옵션은 MEMORY 엔진의 테이블 크기에만 영향을 미치며, InnoDB 엔진의 경우에는 영향을 미치지 않습니다.

    위의 예제에서 max_heap_table_size 옵션은 64M로 설정되어 있습니다. 이 옵션을 설정한 후, MEMORY 엔진의 테이블을 생성하고 INSERT 문을 실행하면, MySQL 서버의 메모리 사용량은 64M 이상으로 증가하지 않습니다. 그러나 InnoDB 엔진의 경우에는 영향을 미치지 않습니다.

    InnoDB 엔진의 메모리 관리는 InnoDB Buffer Pool에 의해 관리됩니다. InnoDB Buffer Pool은 MySQL 서버의 메모리에서 데이터를 캐시하는 영역입니다. InnoDB Buffer Pool의 크기는 innodb_buffer_pool_size 옵션으로 설정할 수 있습니다.

    위의 예제에서 SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_bytes_data'; 문을 실행하면, InnoDB Buffer Pool의 현재 크기를 확인할 수 있습니다. 그러나 이 옵션은 메모리 사용량을 제한하는 옵션은 아닙니다.

    따라서, --max_heap_table_size 옵션은 MEMORY 엔진의 테이블 크기에만 영향을 미치며, InnoDB 엔진의 경우에는 영향을 미치지 않습니다. InnoDB 엔진의 메모리 관리는 InnoDB Buffer Pool에 의해 관리됩니다.

    2025-06-24 02:39

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 30,845건 / 5 페이지

검색

게시물 검색