"MySQL에 할당된 메모리 양을 확인하십시오"라고 알릴 때 본 글

실제 업무에서 DB의 메모리 설정을 확인한 적이 있기 때문에 절차가 남는다.
메모리 설정 방법은 덮어쓰지 않습니다. 설정하려면 참고 문장을 참고하십시오.

두루뭉술하게 말하다

  • MySQL의 메모리 설정은 흐름 조회를 통해 검사할 수 있음
  • INNODBBUFFER_POOL_SIZE 값 확인
  • MySQL의 메모리에 대한 설정은 다양한 종류가 있으며, 사용한 버전과 내부 엔진에 따라 확인된 항목도 달라질 수 있으니 주의
  • 전제 조건

  • MySQL의 저장 엔진은 InnoDB(확인 방법 후술)
  • MySQL 전체에 사용되는 스토리지를 확인하는 목적
  • 확인 단계


    【1단계】 스토리지 엔진의 종류 확인


    MySQL은 스토리지 엔진에 따라 스토리지 사용 방법과 확인 항목이 달라집니다.
    이번에는 대표적인 이노DB를 대상으로 다음과 같은 조회를 실시하여 저장 엔진이 이노DB인지 확인해 주십시오.
    mysql
    SHOW TABLE STATUS FROM データベース名;
    
    각 테이블의 Engine 열 값은 InnoDB입니다.
    ※ 저장 엔진이란
    SQL 문을 수신하고 결과를 반환하는 데이터베이스 엔진 섹션
    https://qiita.com/ishishow/items/280a9d049b8f7bcbc14a

    [STEP 2] 스토리지 크기 확인


    1단계에서 스토리지 엔진이 InnoDB임을 확인하면 INNODBBUFFER_POOL_SIZE 값을 확인합니다.
    mysql
    SELECT @@GLOBAL.INNODB_BUFFER_POOL_SIZE/1024/1024 as メモリサイズ(単位:MB);
    
    이 INNODBBUFFER_POOL_SIZE 값은 MySQL 전체에 사용할 수 있는 메모리 양입니다.
    INNODB_BUFFER_POOL_SIZE의 값 단위는 바이트이기 때문에 직접 얻으면 이해하기 어려우므로 1024로 나누어 조정하는 것이 좋다.
    예는 MB(메가바이트)로, 1024를 더하면 GB(메가바이트)로 변환할 수 있다.

    【3단계】로그 파일의 크기 확인


    메모리 설정 확인을 의뢰받았을 때 처리가 느려 병목 조사를 목적으로 하는 경우가 많았다.
    로그 파일 용량 부족 시 성능 저하
    메모리 크기를 확인했다면 신중하게 로그 파일의 크기도 확인해야 한다.
    mysql
    SELECT @@GLOBAL.INNODB_LOG_FILE_SIZE/1024/1024 as ログファイルサイズ(単位:MB);
    
    INNODB_LOG_FILE_SIZE 값은 1MB 이상 4GB 이하의 범위에서 타겟으로 INNODBBUFFER_POOL_SIZE의 4분의 1 정도로 설정하면 좋을 것 같아요.

    총결산


    저도 예전에 MySQL의 메모리 설정을 확인하는 작업에서 같이 참석한 적이 있어요.
    그가 무엇을 하는지 제대로 이해하지 못했기 때문에 좋은 기회였다.
    강자가 남긴 검색어와
    아래의 참고 보도 덕분에 점과 점이 연결되어 이해도를 높였다.
    긴 검색어도 하나하나 꼼꼼하게 해석하면 의외로 간단하다.
    (@@는 전역 변수입니다./1024는 단위 조정을 위한 것입니다. 조회가 길어 보이는 것은 as에서 열 이름 조정 등 때문입니다)

    강자로부터 얻은 참고 조회


    select
    @@GLOBAL.KEY_BUFFER_SIZE as GLOBAL_KEY_BUFFER_SIZE,
    @@GLOBAL.INNODB_BUFFER_POOL_SIZE as GLOBAL_INNODB_BUFFER_POOL_SIZE,
    @@GLOBAL.INNODB_LOG_BUFFER_SIZE as GLOBAL_INNODB_LOG_BUFFER_SIZE,
    @@GLOBAL.SORT_BUFFER_SIZE + @@GLOBAL.MYISAM_SORT_BUFFER_SIZE + @@GLOBAL.READ_BUFFER_SIZE + @@GLOBAL.JOIN_BUFFER_SIZE + @@GLOBAL.READ_RND_BUFFER_SIZE as THREAD_BUFFER_SIZE,
    @@GLOBAL.KEY_BUFFER_SIZE + @@GLOBAL.INNODB_BUFFER_POOL_SIZE + @@GLOBAL.INNODB_LOG_BUFFER_SIZE + @@GLOBAL.NET_BUFFER_LENGTH
     + (@@GLOBAL.SORT_BUFFER_SIZE + @@GLOBAL.MYISAM_SORT_BUFFER_SIZE + @@GLOBAL.READ_BUFFER_SIZE + @@GLOBAL.JOIN_BUFFER_SIZE + @@GLOBAL.READ_RND_BUFFER_SIZE) * @@GLOBAL.MAX_CONNECTIONS AS TOTAL_MEMORY_SIZE,
     (@@GLOBAL.KEY_BUFFER_SIZE + @@GLOBAL.INNODB_BUFFER_POOL_SIZE + @@GLOBAL.INNODB_LOG_BUFFER_SIZE + @@GLOBAL.NET_BUFFER_LENGTH
     + (@@GLOBAL.SORT_BUFFER_SIZE + @@GLOBAL.MYISAM_SORT_BUFFER_SIZE + @@GLOBAL.READ_BUFFER_SIZE + @@GLOBAL.JOIN_BUFFER_SIZE + @@GLOBAL.READ_RND_BUFFER_SIZE) * @@GLOBAL.MAX_CONNECTIONS)/1024 AS TOTAL_MEMORY_SIZE_kb,
     (@@GLOBAL.KEY_BUFFER_SIZE + @@GLOBAL.INNODB_BUFFER_POOL_SIZE + @@GLOBAL.INNODB_LOG_BUFFER_SIZE + @@GLOBAL.NET_BUFFER_LENGTH
     + (@@GLOBAL.SORT_BUFFER_SIZE + @@GLOBAL.MYISAM_SORT_BUFFER_SIZE + @@GLOBAL.READ_BUFFER_SIZE + @@GLOBAL.JOIN_BUFFER_SIZE + @@GLOBAL.READ_RND_BUFFER_SIZE) * @@GLOBAL.MAX_CONNECTIONS)/1024/1024 AS TOTAL_MEMORY_SIZE_mb,
     (@@GLOBAL.KEY_BUFFER_SIZE + @@GLOBAL.INNODB_BUFFER_POOL_SIZE + @@GLOBAL.INNODB_LOG_BUFFER_SIZE + @@GLOBAL.NET_BUFFER_LENGTH
     + (@@GLOBAL.SORT_BUFFER_SIZE + @@GLOBAL.MYISAM_SORT_BUFFER_SIZE + @@GLOBAL.READ_BUFFER_SIZE + @@GLOBAL.JOIN_BUFFER_SIZE + @@GLOBAL.READ_RND_BUFFER_SIZE) * @@GLOBAL.MAX_CONNECTIONS)/1024/1024/1024 AS TOTAL_MEMORY_SIZE_gb;
    

    참고 문장

  • MySQL 최소 메모리 설정
  • 5분이면 MySQL의 메모리 관계를 조정할 수 있습니다!
  • MarriaDB-소프트웨어 엔지니어링-Trutk
  • MySQL 성능 튜닝 -my.cnf 수정 -