MySQL Version 5.5 부터는 MySQL을 실행 할때 malloc() library 대신에 사용할 수 있는 라이브러리를 설정할 수 있다.
MySQL을 어떤 시스템에서 사용하느냐에 따라 성능에 큰 차이가 나는데...다음의 url은 그것을 테스트한 외국 사이트의 자료이다.
http://www.mysqlperformanceblog.com/2013/03/08/mysql-performance-impact-of-memory-allocators-part-2/
결과로만 얘기하면,
"cpu core가 8 이상이 되는 시스템 에서는 기본 library보다는 tcmalloc이나 jemalloc을 사용하는것이 성능에 더 좋다."
고 나와있다.
그럼 그와 관련된 설정 정보를 알아보자.
다음의 mysql reference에 나와있는 설정 정보이다.
관련 url
http://dev.mysql.com/doc/refman/5.6/en/mysqld-safe.html#option_mysqld_safe_malloc-lib
mysqld_safe 프로그램의 설정 파라메터 중의 하나
--malloc-lib=[libnm]
시스템의 malloc() 라이브러리 대신에 사용할 라이브러리를 지정할 수 있다. 어떤 라이브러리든 pathname을 지정하여 사용할 수 있으나, tcmalloc의 경우 MySQL의 내부에 포함되어 있어서 그것을 사용할 수도 있다. (Ver. 5.6의 리눅스 배포본에 한해서만 그렇다.) 만약, tcmalloc을 지정하였는데, 제대로 동작하지 않는다면, 대신에 path name을 작성하여 그것을 사용하게 할 수도 있다.
--malloc-lib 은 mysqld 실행 시 메모리 할당을 위한 library를 찾기위한 loader를 enable하기 위한 dynamic link에 영향을 줄 수 있는 LD_PRELOAD 환경 변수를 수정하여 동작한다.
- 만약 환경 변수값이 없거나, --malloc-lib에 아무 것도 주어지지 않는다면, LD_PRELOAD 는 수정되지 않고, tcmalloc을 사용하려고 시도하지 않는다.
- --malloc-lib=tcmalloc이라고 값이 주어진다면, mysqld_safe는 /usr/lib 와 MySQL의 pkglibdir(일반적으로 /usr/local/mysql/lib)에서 tcmalloc library를 찾는다. 만약, tcmalloc을 찾으면 path name을 LD_PRELOAD 값에 추가한다. 그리고, 찾지 못하면 mysqld_safe는 에러를 발생하고 작동을 중지한다.
- 만약 --malloc-lib=/path/to/some/library 로 지정한다면, full path를 LD_PRELOAD에 추가한다. 그리고, 그 패스가 정확하지 않거나, 읽을 수 없는 영역이면, mysqld_safe는 에러를 발생하고 작동을 중지한다.
- mysqld_safe가 LD_PRELOAD에 path name을 추가하는 모든 케이스에서 항상 이미 존재하는 값 앞에 해당 값을 추가한다.
리눅스 유저는 my.cnf에 다음과 같이 설정값을 추가하여 바이너리 패키지 안에 있는 libtcmalloc_minimal.so를 사용할 수 있다.
[mysqld_safe] malloc-lib=tcmalloc |
tcmalloc이 /usr/lib 에 있다면 다음과 같이 설정할 수도 있다.
[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so |
'MySQL별책부록' 카테고리의 다른 글
17. MyISAM 동시 인서트에 대해 (0) | 2014.06.12 |
---|---|
16. Seconds_Behind_Master에 대해... (0) | 2014.03.19 |
14. MyISAM과 InnoDB를 섞어사용하는 경우의 문제점. (0) | 2014.03.07 |
13. MySQL에서 character set과 collation 설정하기 (3) | 2014.03.07 |
12. Replication 설정 정보 삭제하기 (0) | 2014.02.11 |