DBMS와 NoSQL의 성능을 비교해보고자 TPC-C 성능테스트를 진행중입니다. 그런데, 테스트를 수행하고 나니, 성능측정 결과를 어떻게 해석해야할지 모르겠습니다. 오늘은 TPC-C의 성능 측정 메트릭에 대해서 알아보고 무엇을 기준으로 해야하는지 알아보겠습니다.
Table Of Contents
TPC-C에 대한 사전지식
먼저 TPC-C에 대해서 지식이 없는 분은 다음 링크에서 TPC-C에 대한 사전 지식을 익히고 오시는 것이 좋습니다. 그래야 이해가 가능할 것 같습니다.
성능 측정 결과 분석을 위한 기본 자료
성능 측정 결과 분석을 위한 문서는 TPC-C의 표준 문서에 나와있습니다. 표준 문서의 Clause 5에는 Clause 5: "PERFORMANCE METRICS and RESPONSE TIME"에 대한 설명이 자세히 나와있으므로 해당 문서를 참고하여 이 글을 작성해 보도록 하겠습니다.
TPC-C 표준 문서는 아래 링크에서 받으실 수 있습니다.
용어 정의
measurement interval: 측정 간격이라는 용어는 벤치마크 실행 중 정상 상태 기간을 의미합니다. 테스트 스폰서가 처리량 등급을 보고하는 정상 상태 기간을 의미합니다(자세한 요건은 5.5항 참조).
completed transactions: 완료된 트랜잭션이라는 용어는 하나 이상의 데이터베이스 트랜잭션으로 구성되는 비즈니스 트랜잭션을 의미합니다. 시스템에서 성공적으로 커밋되고 원격 터미널 에뮬레이터에 의해 출력 데이터가 표시되었거나( 신규 주문, 결제, 주문 상태 또는 재고 수준 거래의 경우) 또는 전체 항목이 결과 파일에 기록된 경우(배송 거래의 경우). 오류 시뮬레이션을 위해 롤백된 신규 주문 거래는 완료된 거래로 간주됩니다.
[오류 시뮬레이션을 위해 롤백된 신규 주문 거래]
사용자 데이터 입력 오류를 시뮬레이션하기 위해 신규 주문 트랜잭션의 고정 1%가 무작위로 선택되고 업데이트 트랜잭션 롤백 성능을 테스합니다. 이는 [1 ... 100] 범위 내에서 임의의 숫자를 생성하여 구현해야 합니다.
에뮬레이트된 사용자의 트랜잭션 속도
아래 그림은 각 에뮬레이트된 사용자가 실행하는 사이클을 보여줍니다. 화면의 활성 부분은 굵은 글씨로 표시되어 있고 가상의 사용자가 아래와 같은 작업을 반복하는 상황을 시뮬레이션 하는 테스트입니다.
1. 가중치 분포에 따라 메뉴에서 거래 유형을 선택합니다(5.2.3항 참조).
2. 입력/출력 화면이 표시될 때까지 기다립니다.
3. 메뉴 RT(응답시간- Response Time)를 측정합니다.
4. 정의된 최소 키 입력 시간 동안 필요한 입력 필드 개수를 입력합니다.
5. 필요한 수의 출력 필드가 입력/출력 화면에 표시될 때까지 기다립니다.
6. 트랜잭션 RT(응답시간- Response Time)를 측정합니다.
7. 입력/출력 화면이 계속 표시되는 동안 정의된 최소 생각 시간(Think Time)을 기다립니다.
트랜잭션 타입은 아래와 같은 5가지 유형중 하나가 되며, 각각은 아래 표에 나타난 최소 비율을 유지해야합니다.
New-Order의 경우 보고된 처리량이 측정된 속도이므로 최소 비율이 없습니다.
각 거래 유형에 대한 최소 혼합 비율의 목적은 신규 주문 거래당 약 1개의 결제 거래와 신규 주문 거래 10건당 약 1개의 주문 상태 거래, 1개의 배송 거래, 1개의 재고 수준 거래를 실행하는 것입니다. 이러한 조합으로 각 주문의 비즈니스 처리가 완료됩니다.
총 거래 수는 다음 두 가지 방법 중 하나로 계산할 수 있습니다:
1. 메뉴에서 선택되어 측정 기간 내에 완료된 모든 트랜잭션을 기준으로 합니다. 측정 구간 내에서 완료된 모든 트랜잭션을 기준으로 합니다.
2. 측정 간격 동안 RTE(Remote Terminal Emulator)에서 트랜잭션 RT(응답시간-Response Time)가 완전히 측정된 모든 트랜잭션을 기준으로 합니다.
처리량 계산하기 - Computation of Throughput Rating
TPC-C에서 규정된 트랜잭션들의 혼합은 완전한 비즈니스 사이클을 표현합니다. 이는 신규 주문 입력, 기존 주문 상태 조회, 미결 주문 배송, 고객 결제 입력, 창고 재고 수준 모니터링 등 여러 비즈니스 트랜잭션으로 구성됩니다.
벤치마킹의 성능은 다음의 최대 적격 처리량(MQTh: Maximum Qualified Throughput)으로 평가할 수 있습니다.
최대 적격 처리량(MQTh)을 보고하는 데 사용되는 메트릭은 분당 처리되는 주문 수(New Order)입니다. 이는 트랜잭션 실행률이 아닌 "비즈니스 처리량"의 척도입니다.
MQTh는 측정 구간 동안 RTE(Remote Terminal Emulator)에서 완전히 측정된 New-Order 트랜잭션의 총 수를 구간의 경과 시간으로 나눈 것입니다. 이때, 오류 시뮬레이션을 위해 롤백이 필요한 New-Order 트랜잭션도 MQTh에 포함됩니다. 이는 시스템이 얼마나 많은 New-Order 트랜잭션을 특정 시간 동안 완료할 수 있는지를 나타내는 지표입니다.
테스트하는 시스템의 MQTh를 보고하는 데 사용되는 메트릭의 이름은 tpmC입니다.
결론적으로, TPC-C의 성능 측정은 분당 New-Order 트랜잭션의 처리량(1%의 abort/rollback 트랜잭션 포함)으로 계산할 수 있습니다.
ddd
테스트 결과는 다음과 같은 보고서로 나타납니다.
실제 측정에는 여러가지 더 많은 고려해야할 요소들이 있으므로 전체 내용을 파악하기 위해서는 첨부 문서를 참고하시기 바랍니다.
tpc-c 스펙 문서는 아래에 첨부하였습니다.
'IT' 카테고리의 다른 글
python(파이썬) DBMS 접근하기 - pyodbc 설치 및 사용법, 접속 및 SQL 수행 (1) | 2024.02.20 |
---|---|
Google 스프레드시트의 프로젝트 일정(WBS) 작성하기 - ProjectSheet planning 확장프로그램 사용법 (34) | 2024.02.20 |
DBMS 성능 테스트 모델 TPC-C에 대해서 - Altibase, Mariadb, MySQL, Oracle, NoSQL 등 (25) | 2024.02.19 |
python으로 Altibase DBMS 성능 테스트 하기 - py-tpcc로 altibase tpcc 테스트하는 법 (22) | 2024.02.16 |
구글(Google) AI 제미나이(Gemini) 사용기 - 바드에서 바뀌었어요 (1) | 2024.02.15 |