문제의 시작
Benchmarking을 할 때 가장 먼저 정해야 하는 것은 어떤 숫자를 볼 것인가가 아니라, 어떤 workload를 평가하는가다. OLTP와 OLAP는 둘 다 database 성능을 말하지만, 좋은 성능을 판단하는 기준이 다르다. 이 글은 두 유형에서 어떤 지표를 봐야 하는지 정리한 기록이다.
데이터베이스의 성능, 신뢰도, 확장성 테스트를 할 때 벤치마크 타입을 선택해야 한다. 수많은 타입이 있는데, 크게 두 가지로 분류하여 다뤄본다.
앞선 HammerDB benchmark setup에서는 TPC-C를 사용하여 테스트하였다.
먼저 Transactional Benchmark (OLTP)가 있다.
Online Transaction Processing 의 약자로, 많은 데이터베이스 아키텍쳐에서 쓰이는 transaction oriented - 자주 상호작용하는 수많은 서비스를 위한 신속하고 정확한 데이터 처리를 가능케 한다.
Transactional Benchmark 테스트에서는 다음과 같은 요소들을 확인한다.
우선 Throughput 관련 지표들이다.
-
Transactions Per Second (TPS)
-
Queries Per Second (QPS)
Latency 관련
-
Response Time
-
Read/Write Latency
Concurrency 관련
-
Lock Time
-
Blocking
핵심 내용
Resource Utilization
-
CPU Usage
-
Memory Usage
-
Disk I/O
이후 Error Rates, Scalability, Availability 등이 있다.
OLTP Benchmark에는 TPC-C, Sysbench 등이 있다. 특히 TPC-C 는 시스템의 성능을 확인하는 가장 대표적이고 무난한 industry-standard 벤치마크이다.
다음으로 Analytical Benchmark (OLAP)가 있다.
OLTP가 포괄적이고 많은 use case 에서 사용한다면 OLAP는 data analyst, data engineer 들이 data mining, analytics, business intelligence에 사용한다. 가령 금융분석, 기상예보, 마케팅 등에 사용할 수 있다.
OLTP는 많은 양의 작은 트랜잭션을 처리하고, OLAP는 complex query를 처리한다.
OLTP 는 보통 INSERT, UPDATE, DELETE operation을 다수 처리하며, OLAP에서는 data aggregation을 위한 SELECT operation들을 처리한다.
지표 선택 기준
지표를 잘못 고르면 benchmark는 오히려 판단을 흐린다. OLTP에서는 transaction 처리량과 latency, lock이 중요하고, OLAP에서는 scan, aggregation, load time, ETL 비용이 더 중요해진다. 성능을 말하기 전에 workload의 이름을 먼저 붙이는 습관이 필요하다.
OLTP에서 집중적으로 보는 지표는 다음과 같다.
Query Performance
-
Query Execution Time
-
Query Throughput
Data Load & Transformation
-
Load Time
-
ETL Time (Extract, Transform, Load operation)에 걸리는 시간
OLAP Benchmark에는 TPC-H, TPC-DS, SSB 등이 있다.