MySQL 5.7 에 대해서 소개합니다. – 1편

출처 : http://meetup.cloud.toast.com/posts/56

본 내용은 NHN엔터테인먼트의 김성훈 님께서 작성하신 내용 입니다.

연재

MySQL 5.7 에 대해서 소개합니다. – 1편
MySQL 5.7의 새로운 기능에 대해서 소개합니다. – 2편

안녕하세요. NHN엔터테인먼트 김성훈입니다.

10/21 에 드디어 MySQL 5.7 GA(General Availability) 가 나왔습니다. (MySQL 5.7.9 버전입니다.)
이제야 필드(서비스)에서 쓸만한 버전이 되었다는 뜻이죠. 그런 의미에서 MySQL 5.7 의 성능개선이나 새로운 기능, 그리고 변경된점을 소개하려고 합니다. 아마도, 시간이 허락하는 데까지 쓰고 첫 번째 글을 마칠꺼 같습니다.

0. 개요

mysql_1.JPG

위에 안내해 드리는 표가 MySQL 5.7 에 대해서 오라클에서 간단히 정리한 내용입니다. 개발자 분들이라면, New Optimizer (쿼리 성능향상), Native JSON support 같은 것들이 관심이 갈 것 같네요. 인프라 담당자인 경우에는 3배 빨라졌다거나, 다양한 복제관련 기능향상, sys schema 같은 것들이 주요 이슈가 됩니다. 저는 DBA라서, 우선 3배 빨라졌다 (붉은것은 3배 빠르다?) 는 부분부터 이야기 드리려고 합니다.

1. MySQL 5.7 의 성능향상

1) 1.5 배 빠르다

mysql_2.gif

(위에 테스트 환경은 E7-8890 (18 Core, 36 thead 2.5GHz ) * 4 EA, 512G RAM 입니다. 치수는 참조만 하세요.)

일반적인 게임DB 환경인 읽기/쓰기 환경에서 MySQL 5.6 대비 최대 1.5배 빠릅니다.기존 MySQL 5.6 은 HW가 아무리 좋아도 단일 장비에서 낼 수 있는 최대 성능한계가 있었는데, 이게 50% 증가했습니다.

사내에서 사용하는 표준DB 장비에서는 어떤 성능을 이끌어 낼 수 있을지 궁금하시죠? 아쉽지만 현재의 5.6을 대체해서 도입하는건 아직까지는 시기상조 인거 같습니다. 위의 그래프에서도 보이지만, 기존 MySQL 5.6 의 성능한계에 도달하기 전 workload 에서는 미세하게 5.6이 성능이 높은 구간이 있습니다.즉, 아주 이용량이 많은 DB가 아니라면 성능향상은 눈에 띄이지 않습니다. 또한, 12Core 미만 장비에서는 성능향상이 높지 않다는 리포트도 있습니다. (이건 경쟁사인 MariaDB 쪽에서 테스트 한거라서, 게시물에는 안올릴께요.)
제가 GA이전 버전으로 테스트 했을때는 5.6 대비 성능이 다소 낮아지는 경우도 발생했습니다. 보다 상세한 결과는 추후 사내 표준DB에서 테스트를 해보고 표준화 해서 올리도록 하겠습니다.

2) 3배 빠르다

mysql_3.gif

읽기 전용에서는 3배 빠릅니다. 위와 동일한 시스템에서 PK looup 만 하는 경우 160만 QPS 도 처리했다고 합니다. GA 나오기 전 버전으로 테스트 했을때도 read 성능은 5.6 보다 다소 높았습니다. 하지만 이것만 가지고 upgrade 를 하기에는 뭔가 부족합니다.

3) 쿼리성능향상

’그 동안 바보취급(?) 받아왔던 Optimizer 가 새로워졌습니다.’ 라고 해도 피부에 와 닿지는 않으실꺼에요. 일단 subquery 를 사용하지 못하도록 저에게 압력 받으셨던 개발자 분들은 조금 숨통이 트이실듯 합니다. 쿼리를 약간 더 스마트 하게 해석해서, 좀더 나은 성능을 보여주네요. 상용만은 못하지만 좀 더 좋아졌습니다.

임시테이블도 MyISAM 에서 innodb로 엔진을 바꿔서, 성능이 더 높아졌습니다. 또한 동작하고 있는 thead 의 explain 도 볼 수 있는 기능이 생겼습니다. 이건 DBA 인 제가 격렬하게 반기는 기능입니다. 사실, 위에 1), 2) 의 성능향상 보다는 바로 이것 때문에 MySQL 5.7 도입을 이 바쁜 와중에서도 준비하고 있습니다. 쿼리 성능테스트하는데 explain 을 이용이 더 세밀해지고 좋아졌습니다. json 으로 나올 수 있는데다, 무려 단계별 cost 정보가 나옵니다. 따라서 어느 단계어서 문제가 있는지 거의 상용 DBMS 수준으로 체크가 가능합니다. 특히 workbench 에서 보면 쿼리플랜이 상당히 알아보기 편하게 그래프로 표현됩니다.

mysql_4.JPG

힌트를 주는 방식이 조금더 세밀해지고, Query Rewrite Plugin 이라는게 생겨서 특정패턴의 쿼리를 DB단에서 바꿔서 쿼리해주는 기능이 생겼습니다. 다만, 이런 기능은 익숙해지는데 시간이 조금 걸릴듯 해요. 이건 앞으로의 즐거움으로 … 아, 성능개선만 살펴봤는데도 벌써 시간이 이렇게 지났네요.

요약하면 2가지 입니다.

  1. 최고 처리성능이 향상되어 보다 큰 스팩의 장비에도 통째로 MySQL 을 설치해서 쓸만 해졌습니다.
  2. 쿼리 최적화가 보다 잘되고, 개발/관리 기능이 많이 향상되었습니다.

다음글에는 MySQL 5.7 에서 지원하게 되는 새로운 기능에 대해서 쓰려고 합니다.
업무하면서 생각보다 일찍 일이 마무리되면 다음 편에 대해서 글을 써보도록 하겠습니다.

장문의 글을 읽어주셔서 감사합니다.

About KENNETH 11208 Articles
지락문화예술공작단

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.