MySQL Optimization for Galaxy

Galaxy 자체의 optimization을 한 후에 데이터베이스가 병목이라는 것은 알고 있었지만, 손을 놓고 있다가, 살짝 건드려주었습니다. 기본적인 두가지 optimization을 해주었는데, 상당히 성능이 좋아졌군요.

Indexing

모든 optimization은 measurement가 우선해야겠지만, 귀찮은 나머지, 그냥 MySQL이 제공하는 Slow query log를 사용해서 Index를 달기 위한 query들을 선별했습니다.

log_slow_queries
set-variable = long_query_time=1

MySQL 설정에 위와 같이 추가해주면, 1초 이상 걸리는 (in real time) query들의 로그를 생성해줍니다.

처음 table 설계시에는 Galaxy의 logic에 대한 고려가 없었기 때문에 Primary/Unique를 제외한 Index는 하나도 없었습니다. Indexing을 적당히 넣어주자 당장 Slow query에서 빠졌을 뿐만 아니라, 체감속도도 빨라졌습니다.

Increasing Buffer Size

Galaxy가 사용하는 MySQL table은 모두 InnoDB로 되어있기 때문에 다음 설정들을 손봐주었습니다.

set-variable = innodb_buffer_pool_size=128M

기본값인 32M일 때는, Indexing을 해주었음에도 불구하고 가끔씩 Slow query가 나왔는데, Buffer size를 늘려주고 나서는, 처음 query를 제외하고는 Slow query가 나오지 않더군요.

Etc.

대충 크게 잡아놨던 Column들의 type들을 조정해주었습니다. Galaxy는 날짜 순으로 최근 item부터 보여주기 때문에, table order를 날짜 순으로 정리해줬습니다. Defragmentation도 해주었습니다.

References

MySQL by Paul DuBois

댓글 달기

이메일 주소는 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.