문서번호 : 11-1608818
안녕하세요.
이번에 간단하게 SingleStoreDB, PostgreSQL, MySQL 의 3가지 Database 를 동일한 장비에서 동일한 테이블과 SQL을 이용하여 조회 성능 비교를 해 보았습니다.
•
장비 사양은 8vCPU, 32GB Memory, 100GB Boot Volume 입니다.
•
데이터셋은 CC By 4.0 License 를 가지고 있는 Stefan Proell, Eva Zangerle, Wolfgang Gassler 가 만든 Flughafen DB(https://github.com/stefanproell/flughafendb) 를 기초로 한 mysql 의 airportdb(https://dev.mysql.com/doc/airportdb/en/airportdb-introduction.html) 를 사용하였습니다.
•
모든 데이터베이스는 yum을 이용해 가장 최신 버전을 설치하고 성능을 위한 별도의 튜닝은 하지 않았습니다.
•
데이터 로딩은 각각의 데이터베이스에서 제공하는 Tool 을 사용하였고 대략적인 로딩 시간은 아래와 같습니다.
◦
SingleStoreDB : 약 2분
◦
PostgreSQL : 약 19분
◦
MySQL : 약 16분
모든 Query 는 Parsing 및 Cache 오버헤드의 영향을 최소화하기 위해 각각 두 번 연속 수행하고 두번째 결과를 캡쳐했습니다. SingleStoreDB, PostgreSQL, MySQL 순서로 조회 성능이 측정되었습니다.
단위 : 초 | SingleStoreDB | PostgreSQL | MySQL |
Query 1 | 0.32 | 2.696 | 16.03 |
Query 2 | 0.06 | 2.756 | 18.36 |
Query 3 | 1.16 | 3.110 | 31.38 |
Query 4 | 0.08 | 3.181 | 104.17 |
0. Table Count
1. Query 1
2. Query 2
3. Query 3
4. Query 4
위 테스트를 따라할 수 있는 Step-by-Step 설명은 추후에 정리되는 대로 별도로 게시하도록 하겠습니다.
Query 2 의 실행계획을 살펴 보면 MySQL 이 PostgreSQL 에 비해 느린 이유를 알 수 있습니다.
SingleStore는 컬럼스토어 테이블에 대한 Parallel Scan
PostgreSQL은 로우스토어 테이블에 대한 Parallel Scan
MySQL만 로우스토어 테이블에 대한 Serial Scan