RadarURL
Skip to content
조회 수 3935 추천 수 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. No Image 16Apr
    by 처누
    2004/04/16 by 처누
    Views 7326 

    mySQL에서 사용자와 권한

  2. No Image 06Jun
    by 처누
    2004/06/06 by 처누
    Views 7355 

    Mysql 기초-DB 설치, 관리자지정, 계정추가 등

  3. No Image 26Nov
    by JaeSoo
    2005/11/26 by JaeSoo
    Views 6892 

    MySql 테이블 검사 및 복구하기 [ myisamchk ]

  4. No Image 16Feb
    by JaeSoo
    2006/02/16 by JaeSoo
    Views 7859 

    mysql에서 사용자 계정 비밀번호 변경 방법

  5. No Image 25Jan
    by JaeSoo
    2010/01/25 by JaeSoo
    Views 7581 

    MySQL에서 테이블을 생성할때 MyISAM과 InnoDB 어느것을 선택하나요?

  6. No Image 05May
    by JaeSoo
    2010/05/05 by JaeSoo
    Views 8115 

    [Mysql] 범위 삭제 DELETE 쿼리

  7. No Image 30Apr
    by JaeSoo
    2011/04/30 by JaeSoo
    Views 8529 

    mysql 4.x 버전의 euc-kr(latin1) DB를 mysql 5.x 버전으로 이전 하는법

  8. No Image 08Jun
    by JaeSoo
    2011/06/08 by JaeSoo
    Views 10702 

    MySQL Dump뜨는 방법 및 복구 방법

  9. No Image 16Jun
    by JaeSoo
    2011/06/16 by JaeSoo
    Views 12686 

    fedora core4 mysql 서버설치 및 windows client로 접속

  10. No Image 16Jun
    by JaeSoo
    2011/06/16 by JaeSoo
    Views 10362 

    [Fedora 8] Mysql 5.0.67 설치

  11. No Image 16Sep
    by JaeSoo
    2011/09/16 by JaeSoo
    Views 9270 

    Mysql DB 손상됬을경우 점검 및 복구 명령

  12. No Image 15Nov
    by JaeSoo
    2011/11/15 by JaeSoo
    Views 7600 

    MySQL 재설치시 오류

  13. No Image 15Nov
    by JaeSoo
    2011/11/15 by JaeSoo
    Views 5561 

    MySQL Data file 위치

  14. No Image 15Nov
    by JaeSoo
    2011/11/15 by JaeSoo
    Views 5745 

    MySQL Plugin 'InnoDB' init function returned error.

  15. No Image 05Jun
    by JaeSoo
    2012/06/05 by JaeSoo
    Views 4627 

    mysqlcheck 유틸리티 사용법(analyze, optimize, repair)

  16. 윈도우환경에서 MySQL 설치하기

  17. No Image 13Mar
    by JaeSoo
    2013/03/13 by JaeSoo
    Views 1355 

    MySQL database 정보 import하기

  18. No Image 19Mar
    by JaeSoo
    2013/03/19 by JaeSoo
    Views 1617 

    MySQL 테이블 형태 변경하기 MyISAM -> InnoDB(또는 InnoDB -> MyISAM)

  19. No Image 19Mar
    by JaeSoo
    2013/03/19 by JaeSoo
    Views 6768 

    [MySQL] phpMyAdmin으로 MyISAM 테이블 형식을 InnoDB로 바꾸기

  20. 왜 MySQL 에서 InnoDB 를 써야하는가? InnoDB vs MyISAM 비교

Board Pagination Prev 1 2 Next
/ 2

PageViews   Today : 9155 Yesterday : 5037 Total : 21965207  /  Counter Status   Today : 8852 Yesterday : 4602 Total : 1191575

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소