RadarURL

조회 수 5116 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

by kth MIS팀 성동찬 ( DBA )

 

Overview

MySQL에서는 MyISAM, InnoDB, Archive 등과 같은 훌륭한 엔진을 제공합니다.  목적에 맞게 적절(?)하게 사용을 한다면, 기타 고 비용 상용 DBMS 부럽지 않게 DB를 구성할 수 있습니다. 물론 적절이라는 말이 세상에서 가장 난해한 단어겠지만요.^^

사실 OLTP 성 서비스에는 대부분 innodb위주로 설정을 해왔기에, 특별하게 MyISAM 영역에 대해서는 신경을 쓰지 않았습니다. 단순하게 해당 스토리지 엔진의 특성만 기억하고 있었지, OLTP 성격의 서비스에 굳이 투입하고 싶지도 않았고요. 하지만 얼마전 공간 인덱스(R-Tree)에 관한 요구사항이 발생하여 어쩔 수 없이 MyISAM 위주로 구성을 한 Case가 있습니다. 그래서 MyISAM 스토리지 엔진에 관한 간단한 BMT를 진행하였고, 결과에 관해서 공유드리고자 합니다.

Feature

MyISAM과 InnoDB를 간단하게 비교한 표입니다. Geospatial 기능과 Full-text Search 기능을 제외하고 눈여겨 보셔야 할 부분은 트랜잭션, Locking Level, Data caches 등 세가지 입니다. 이 세가지 특성으로 인하여 특수한 경우(spatial, full-text search)등을 제외한 경우 InnoDB를 선택해야만 하는 이유가 나옵니다.

img013.png

아직 InnoDB에서는 Compressed 기능 적용 시 테이블 사이즈 변화는 검토해볼 사항이겠군요. Barracuda format을 적용하여 Compressed 적용 시 성능 및 데이터 사이즈 변화에 관한 내용은 조만간 비교해서 공유드리겠습니다.^^

MyISAM Benchmark

시스템>

  • CPU
    4-core : Intel(R) Xeon(R) CPU E5405  @ 2.00GHz
    8-core : Intel(R) Xeon(R) CPU L5520  @ 2.27GHz
  • Memory : 8G
  • DISK        :
    Raid-1 for OS
    Raid-1 for DATA (I/O성능은 좋지 못하다고 보면 됨)
  • MySQL verstion : mysql  Ver 14.14 Distrib 5.1.57

<Benchmark>

  • Sysbench-0.4.12 tool사용
  • MyISAM 1000만 건 데이터 생성 후 Read-only/Complex Test 수행
  • 4-core/8-core/key_cache_block_size 변경 후 테스트

<Query Cache on/off READ TEST result>
사용 유무에 따라서 2배 성능 차이가 발생합니다.
두 경우 모두 5개 Thread이상에서는 더이상 성능 향상이 발생하지 않습니다.
img021.png

<Key Block Size 변경 READ TEST result>
key_cache_block_size를 OS와 동일하게 구성한 결과 15% 성능 향상되었습니다.
두 경우 모두 5개 Thread이상에서는 더이상 성능 향상이 발생하지 않습니다.
img031.png

<CPU core 개수 변화에 따른 READ TEST result>
8-core가 2배 정도 성능이 좋게 나오나, 장비가 다르므로 큰 의미는 없습니다.
다만 4-core는 5-Thread에서, 8-core는 10-thread 이상에서는 성능에 변동이 없는 것을 확인할 수 있네요.
img041.png

<Key Block Size 변경에 따른 READ/WRITE TEST result>
key_cache_block_size를 OS와 동일하게 구성한 결과 15% 성능 향상되었습니다.
5개 Thread이상에서는 더이상 성능 향상이 없습니다.
img05.png

<CPU core 개수 변화에 따른 READ/WRITE TEST result>
8-core가 성능이 훨씬 좋은 것으로 나오나, 장비가 다르므로 큰 의미는 없습니다.
4-core, 8-core 모두 5-thread 이상에서 성능상 큰 변동은 없군요.
img061.png

다음은 MySQL에서 최근 발표한 MyISAM vs InnoDB 성능 테스트 BMT결과입니다. MySQL 5.5 Version부터 innodb를 default-storage-engine으로 적용하면서 비교 분석한 자료네요. 이 자료를 보면 왜 OLTP환경에서는 InnoDB 를 채택하는 것이 좋은지를 아주 명확하게 알려줍니다. Core가 많을 수록 InnoDB성능은 비례하게 올라가는 반면, MyISAM은 그대로 유지합니다.

 

img07.png

img08.png


Conclusion

일정 동시 요청 건 수(5~10 Thread) 이상으로는 더이상 성능 향상이 없는 것을 확인할 수 있습니다. 이는 MyISAM이 Table-level Lock으로 데이터 DML을 처리하고, Data를 직접 DISK에서 읽어오는 것에서 발생하는 한계점이라고 판단이 듭니다.

따로 내용을 정리하지는 않았었지만, Key Cache 사이즈 변화에 따른 성능 변화도 테스트해 보았습니다. 그 결과 인덱스 총 사이즈보다 Key Cache 사이즈가 크게 설정되어 있으면 성능상 변화는 거의 없었습니다. 인덱스 또한 MyISAM은 인덱스 압축 기법을 통하여 사이즈를 최소화하기 때문에 굳이 Key Cache사이즈를 4G 이상으로 할당하는 것은 큰 의미가 없겠습니다.

결국 MyISAM을 사용 시 고비용의 고스펙 장비는 필요없다는 결과가 나왔습니다. CPU/Memory 부분보다는 오히려 DISK 성능을 향상시키는 것이 성능상 큰 효과를 거둘 수 있겠습니다. (Random I/O가 좋은 SSD라면 상당한 효과를 거두겠습니다.) 메모리는 OS Cache를 고려하여 6G~8G, CPU는 최대 8-core까지만 사용하는 것이 낫다고 생각합니다. 그리고 key cache block size는 OS 사이즈를 확인 후 동일하게 유지하는 것을 권고드립니다.

 

출처 : http://dev.kthcorp.com/2011/06/17/why-we-need-to-use-innodb-on-mysql-vs-myisam-comparison/

TAG •
?

공부 게시판

공부에 도움되는 글을 올려주세요.

  1. [공지] 공부 게시판 입니다.

    Date2003.08.18 By처누 Views928102
    read more
  2. [오라클] RAC(Real Application Cluster)이란?

    Date2023.05.01 Category데이터베이스 ByJaeSoo Views95
    Read More
  3. 데이터베이스 튜닝 (DB Tuning)

    Date2023.04.27 Category데이터베이스 ByJaeSoo Views346
    Read More
  4. BCV (Business Continuance Volume)

    Date2023.04.14 Category데이터베이스 ByJaeSoo Views70
    Read More
  5. MySQL Dump / Import (덤프 / 임포트)

    Date2016.10.10 Category데이터베이스 ByJaeSoo Views229
    Read More
  6. mysql이 cpu를 많이 점유하고, DB와의 연결상태가 좋지 않을때

    Date2016.07.05 Category데이터베이스 ByJaeSoo Views338
    Read More
  7. [Oracle] Lock 확인 및 Lock 해제

    Date2016.03.28 Category데이터베이스 ByJaeSoo Views642
    Read More
  8. Mysql slow-query를 이용한 로그 분석

    Date2015.03.17 Category데이터베이스 ByJaeSoo Views697
    Read More
  9. Mysql 데몬 문제 해결 방안 (cpulimit)

    Date2015.03.17 Category데이터베이스 ByJaeSoo Views911
    Read More
  10. mysql 5.5.x my.cnf 참고

    Date2015.03.16 Category데이터베이스 ByJaeSoo Views673
    Read More
  11. Mysql Slow query log 등록

    Date2015.03.16 Category데이터베이스 ByJaeSoo Views785
    Read More
  12. MYSQL 성능 향상 정리

    Date2015.03.16 Category데이터베이스 ByJaeSoo Views627
    Read More
  13. MySQL Query Cache 사용법

    Date2015.03.16 Category데이터베이스 ByJaeSoo Views708
    Read More
  14. Mysql 에서 Got a packet bigger than 'max_allowed_packet' bytes 오류

    Date2014.12.25 Category데이터베이스 ByJaeSoo Views925
    Read More
  15. MySQL 내부 변수 max_allowed_packet

    Date2014.12.25 Category데이터베이스 ByJaeSoo Views585
    Read More
  16. Mysql binary log 정리, 삭제 주기 설정

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views1158
    Read More
  17. MySQL 로그 파일 관리 2 - 로그 파일 남기기

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views1238
    Read More
  18. MySQL 로그 파일 관리 1 - 설정

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views1155
    Read More
  19. MySQL Binary Log 지우는 방법

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views1222
    Read More
  20. MySQL 설치/사용시 발생 에러 유형별 대처방법

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views6890
    Read More
  21. Mysql 데이터 폴더의 mysql-bin.xxx 파일들 관련 삭제 및 초기화 방법

    Date2014.11.17 Category데이터베이스 ByJaeSoo Views1115
    Read More
Board Pagination Prev 1 2 3 4 5 Next
/ 5


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너