ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL / InnoDB] InnoDB스토리지 엔진 분석 - information schema
    프로그래밍/DBMS 2016. 4. 8. 02:28

    MySQL/InnoDB 엔진 monitoring을 통한 I/O 분석

    내가 연구하는 분야인 데이터베이스 그 중 스토리지 엔진 최적화 분야에서는 I/O 최적화를 위한 많은 노력들이 이루어지고 있다. 자체 데이터베이스를 가지고 있거나 상용 데이터베이스를 판매하는 산업체가 아닌 이상은, 아이디어를 검증하기 위해 직접 시뮬레이터를 제작하거나 오픈소스 데이터베이스를 가져다 쓰는 수 밖에 없다. 당연히 직접 만든 시뮬레이터 보다는 널리 사용되는 오픈소스 데이터베이스를 사용하는 것이 훨씬 믿을만한 정보이다.

    보통 I/O 상태 정보 및 그와 관련된 시스템 콜들에 대한 연구를 진행할 때, 데이터베이스의 종류에 상관없이 sysstat, blktrace 등의 패키지에 내장된 툴을 사용하거나 ftrace, perf와 같이 리눅스에서 자체적으로 지원하는 트레이스 인터페이스를 사용하는것이 일반적이다. (물론 vtune, valgrind 등과 같은 툴들도 포함한다.)

    본 페이지에서는 여러 오픈소스 데이터베이스중에서 가장 널리 쓰이고 있는 MySQL/InnoDB 엔진의 I/O 분석을 할때, 외부 유틸리티를 사용하지 않고 내부의 Monitoring 변수들을 통해 확인하는 방안을 정리한다.

    MySQL/InnoDB 엔진 status 분석하기

    MySQL에서는 기본적으로 다양한 Performance Schema, Information Schema, status, monitoring 등의 정보들을 제공한다. 그중에서 monitoring을 이용한 분석방법을 소개한다. 당연히 내가 사용하는 것들에 대해서만 소개한다.
    기본적으로 InnoDB 엔진의 핵심적인 스토리지 관리 정보들은 monitoring변수를 통해서 제공되고 있다. 특히 많은 변수들이 기본으로 monitoring하게 설정이 되어있어 따로 설정할 필요가 없다.

    InnoDB 엔진에 대한 정보를 얻어내는 방법은 간단하다. mysql 클라이언트를 통해 서버에 접속한뒤 아래의 명령어를 통해 innodb monitor를 모두 설정한다. (하지않아도 된다.)

    set global innodb_monitor_enable = all;
    

    이후 원하는 벤치마크 혹은 원하는 쿼리를 수행한뒤 아래의 쿼리문을 통해 정보들을 가져오도록 한다.

    select * from information_schema.innodb_metrics;
    

    설명은 여기서 끝! 각각의 정보가 무슨 내용인지는 아주 친절히 출력되므로 해당 내용을 보고 자신이 원하는 정보를 가져오면 된다.

    이후 블로깅에서 더욱 자세한 내용과 다양한 performance schema, information schema에 대해서 정리하고 소개하도록 한다.

Designed by Tistory.