[데이터베이스] MySQL & TPC-C(1)

kothe·2022년 10월 18일
0

데이터베이스

목록 보기
1/8

MySQL server

  • Open-source relational database management system (RDBMS)
  • 가장 많이 사용되는 RDBMS
  • Optimized for On-Line Transaction Processing (OLTP)

OLTP vs. OLAP

  • OLTP (On-Line Transaction Processing)
    • 간단한 쿼리를 이용해 빠르게 데이터를 처리(INSERT, UPDATE, DELETE)하는 것이 가장 큰 목적
    • DB를 편하게 관리하도록 도와준다
    • Mixed random read/write workloads (2KB ~ 16KB request size)
    • Index scans 사용
    • Examples: ATM machine, online banking / booking / shopping ...
  • OLAP (On-Line Analytical Processing)
    • 보다 복잡한 쿼리를 사용해 데이터 분석 및 집계를 통해 사용자의 의사결정에 도움을 주는 것이 목적
    • Heavy read workloads (for large data)
    • Full table scans 사용
    • Examples: Sales analysis, market research, forecasting ...

두 방식 모두 indexes를 사용한다. 하지만 실시간으로 대용량 데이터 중 특정 데이터를 빠르게 찾아야하는 OLTP 방식은 index scans을 사용하고, 많은 데이터를 읽어야하는 OLAP 방식은 full table scans를 사용한다.

TPC-C

TPC-C로 벤치마킹을 돌려 데이터베이스의 성능을 평가한다. 먼저, 벤치마킹이 무엇이고 왜 필요할까?
벤치마킹은 특정 애플리케이션의 성능을 측정하고 다른 유사한 workloads와 비교함으로써 performance gap이 있는지 발견하고, 성능 자체를 증가시킨다.

벤치마크는 domain-specific하다. domian 별로 특화되어있기 때문에 범용성이 높은 벤치마크는 효용성이 떨어진다고 할 수 있다. 그러므로 벤치마크는

Relavant -> It should be meaningful within the target domain
Understandable/acceptable -> Vendors and users embrace it
Scalable/coverable -> It should not oversimplify the typical environment

이 세가지 특성을 가지고 있어야만 한다.

  • Database의 성능을 측정하기 위한 OLTP benchmark.

  • Throughput(처리율) of TPC-C = 분당 실행된 New-Order transaction의 수 => TpmC (Transactions per minute count)

  • 5 types of well-defined transactions

    • New-Order (Read/Write)
      고객이 새로운 주문을 요청했을 때 이에 대한 처리를 수행하는 비지니스 트랜잭션

    • Payment (Read/Write)
      고객이 주문한 내용에 대하여 비용 지불을 하였을 때 이에 대한 처리를 수행하는 비지니스 트랜잭션

    • Delivery (Read/Write)
      고객의 주문 사항에 대하여 일괄 처리를 수행하는 비지니스 트랜잭션임

    • Order-Status (Read Only)
      고객의 주문이 어떻게 처리되고 있는지 상태 확인을 처리하는 비지니스 트랜잭션

    • Stock-Level (Read Only)
      전체 보유 제품에 대한 재고 상태를 체크하여 적정 재고 수준에 미달하는 제품을 확인하는 비지니스 트랜잭션

  • Random I/O intensive workload : 65% reads, 35% write로 구성돼있다.

TPC-C Entity / Relationship Diagram

TPC-C benchmark를 실행하거나 data를 load할때 설정하는 Warehouse에 따라 나머지 8개의 테이블의 cardinality가 설정된다.
총 9개의 table을 위에서 정리한 5개의 transactions이 read/write하게된다.

Relation Access Pattern : Select / Insert / Update / Delete 를 정리한 표다.

Database I/O Architecture

위에서부터 차례로 살펴보자.

  • A transaction = A sequence of SQL statements = A sequence of Reads and Writes
  • SELECT 는 page(s)에서 단순히 read한다.
    INSERT/DELETE/UPDATE 는 page(s)를 변경한다.
  • page가 buffer안에 있다면 buffer HIT 이고, 빠른 DRAM에서 읽어온다.
    page가 bufer에 없다면 buffer MISS이고, 느린 Disk I/Os를 해야한다.
    transaction의 response time의 대부분은 Disk I/O이기 때문에 buffer miss를 최소화해야한다.

Reference
https://m.cafe.daum.net/juhj/9lUi/67

profile
천천히 꾸준히

0개의 댓글