Home Ssd성능과 Db성능의 연관성
Post
Cancel

Ssd성능과 Db성능의 연관성

서론

얼마 전 새로운 2TB SSD를 구매했다.
구매 계획은 없었으나 너무 싸게 나온 나머지 충동구매를 한 것이다.
국내 최저가로는 31만원짜리 제품이지만, 아마존에서 세일하는 것을 직구하면 15만원에 살 수 있기 때문에 컴퓨터 부품에 관심이 많은 사람이라면 그냥 지나칠 수 없는 상황이었다.
그래서 산 이후에 구매 목적을 찾는 자신을 발견할 수 있었다.

1 2

이 것을 어떻게 쓸 것인지 고민하던 차에 최근 회사에서 DB에 대용량 데이터 입출력 작업을 하던 것을 떠올렸다.

내가 산 SSD는 현 시점에서 일반 소비자가 구할 수 있는 가장 최고급 제품이다.
컴퓨터 부품의 성능은 대체로 가격과 비례하기 때문에 이 제품 또한 당연히 높은 성능을 보여주지만
사무용, 게임용으로 컴퓨터를 쓰는 일반사용자에게는 이런 부품을 권장하지 않는다.
단순히 비싸서 그런 것이 아니다.

3 4

첫 번째는 내가 C드라이브에 새로 장착한 990pro, 두 번째는 기존에 사용하던 P31의 성능비교다.
일단 단순히 순차 작업에서 2배정도 성능차이가 나는 것을 확인할 수 있다.
동일한 OS나 게임 등을 각각 장치에다가 설치한 후 로딩 속도를 비교할 때 2배 만큼의 차이를 체감할 수 있을까?

M.2 NVMe SSD인 990pro의 스펙상 순차읽기 속도는 7450MB/s이고
SATA SSD인 870evo 의 스펙상 순차읽기는 560MB/s이다.
단순 수치로만 비교했을 때에는 13배정도의 차이가 있지만, 이는 실제로 체감하기 어렵다.
870evo에 윈도우를 설치했을 때 컴퓨터가 부팅하는데에 10초가 걸린다면 990pro에 윈도우를 설치했을 때에는 7~9초 정도 걸린다.

비싼 부품을 쓸 수록 컴퓨터의 기대성능 또한 높아지는 것은 당연하지만, 소프트웨어가 하드웨어 성능을 온전히 100% 활용하는지는 또 다른 문제다.

일반적으로 고사양의 게임을 할 때 고성능 그래픽카드와 고성능 CPU를 사용하면 그래픽카드를 100%활용할 수 있다.
하지만 고성능 그래픽카드와 저성능 CPU를 사용하면 CPU사용률은 100%에 가깝게 유지되는데, 그래픽카드는 40~60%에 머무르는 경우가 있다.
모니터에 좋은 그래픽을 보여주는 것은 그래픽카드의 역할이지만 그래픽카드에 작업을 부여하고 작업결과를 처리하는 것은 CPU의 역할이다.
따라서 CPU의 성능이 모자라면 병목현상이 발생해서 그래픽카드의 성능을 100%활용할 수 없게 된다.

그와 비슷한 현상으로 고성능 SSD를 사용해도 SSD를 조작하는 소프트웨어가 하드웨어를 100%활용하지 못하기 때문에 2배 속도가 빠른 제품로 교체해도 작업시간이 절반으로 줄어들지는 않는다.
하드웨어 성능을 100%활용하는 소프트웨어를 만드는 것은 쉽지 않은 일이기 때문에 대용량 데이터를 처리하는 특수한 목적이 아니라면 일반 사용자는 최고급 SSD를 사는 의미가 없다.
파일 이동/복사 하는 경우가 아니라면 사실상 성능을 체감하기 어렵기 때문이다.

그렇다면, 데이터베이스를 조작하는 것은 “대용량 데이터를 처리하는 특수한 목적”의 소프트웨어로 볼 수있을까?
내 컴퓨터에는 990pro와 P31이 설치되어 있는데, 약 2배의 성능차이가 있으므로 데이터베이스를 설치했을때 2배에 가까운 성능 향상을 기대할 수 있을까? 그래서 실험해 봤다.

테스트 환경 구성

내 로컬에다가 Oracle 19c Enterprise를 설치하여 2개의 USER, 2개의 TABLESPACE를 만든 후, Swingbench로 부하를 걸어봤다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE SMALLFILE TABLESPACE TABLESPACE_SAMSUNG
DATAFILE 
    'C:/samsung/SAMSUNG_DATAFILE01.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G ,
    'C:/samsung/SAMSUNG_DATAFILE02.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G ,
    'C:/samsung/SAMSUNG_DATAFILE03.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G
SEGMENT SPACE MANAGEMENT AUTO 
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE SMALLFILE TABLESPACE TABLESPACE_HYNIX
DATAFILE 
    'D:\hynix\HYNIX_DATAFILE01.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G ,
    'D:\hynix\HYNIX_DATAFILE02.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G ,
    'D:\hynix\HYNIX_DATAFILE03.DBF' SIZE 10M AUTOEXTEND ON NEXT 1 MAXSIZE 30G
SEGMENT SPACE MANAGEMENT AUTO 
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

5 6 7

Number of Users : 1

Swingbench에는 DB에 부하를 거는 여러가지 옵션들이 있는데, 대부분의 옵션은 기본값으로 두고 Number of Users만 바꿔가며 테스트를 진행했다.

8 9

DML Operation과 Transaction Per Minute에서 삼성이 소폭 앞서는 모습을 볼 수 있다.

Number of Users : 5

10 11

마찬가지로 삼성이 소폭 앞선다.

Number of Users : 10

12 13

마찬가지로 삼성이 소폭 앞서는 모습을 보여준다.
다만 DML Operation에서 삼성쪽에서 스로틀링으로 인해 깊게 골이 파이는 부분이 관찰되었고
하이닉스 쪽에서는 Response Time이 요동치기 시작했다.

Number of Users : 20

14 15

전반적인 스코어는 유사한 양상을 보이며 하이닉스도 스로틀링으로 인해 깊게 골이 파이는 것으로 보인다.
다만 PCIe 4.0인 삼성쪽이 더 발열제어가 잘 안되는 모습을 보이지만, Response Time부분에서 앞서는 것으로 보인다.

Number of Users : 50

16 17

마찬가지로 스코어에는 큰 차이가 없으며 군데군데 스로틀링으로 골이 파이는 것이 보인다.

결론

18

앞서 설명할 때에 하드웨어 스펙이 좋아도 소프트웨어가 하드웨어를 100%활용하지 못하면 고급 부품을 사용해도 체감하기 어려울 것이라고 했다.
이와 마찬가지로 모든 테스트에서 실제로 저장장치의 읽기/쓰기가 500MB/s를 넘는 경우가 거의 없었으므로 사실상 읽기/쓰기 성능이 좋은 SSD를 사용해도 DB에는 거의 영향을 주지 않는 것으로 보인다.
이는 오라클 데이터베이스라는 소프트웨어의 한계이거나 세부 튜닝의 부재때문인 것으로 보인다.
중간에 일부분은 스로틀링으로 인해 성능이 대폭줄어드는 부분이 보이는데, 이는 SSD가 얼마나 발열제어를 잘 하는가, 전력을 어느정도 소모하는 제품인가 의 특징을 따르는 것으로 보이며 읽기/쓰기의 속도와는 별 관계가 없는 것으로 보인다.
덤프파일을 오라클로 들여오는 등의 작업이 아니라면 OLTP환경에서 어떤 SSD를 사용하든지 체감되는 성능차이는 거의 없을 것으로 예상한다.
만약에 데이터베이스를 설치할 서버PC를 구매할 일정이 있다면 최고급 m.2 NVMe SSD보다는 가성비 좋은 SATA SSD를 사든지, 적당한 m.2 SSD + 좋은방열판을 사는게 나을 것으로 보인다.

이번 테스트에는 C에다가 오라클을 설치하고 C와 D에 데이터파일을 두었기 때문에 D쪽의 데이터에 부하를 가할떄에 C의 사용량 또한 올라가는 모습을 볼 수 있었다.
이 것은 야매로 테스트했지만, 정밀한 테스트를 위해서는 Swingbench를 돌리는 컴퓨터와 DB가 설치된 컴퓨터를 먼저 분리해야하며, 오라클이 설치된 장치와 동일한 드라이브에 데이터파일을 두는 식으로 테스트 하는 것이 바람직하다.

This post is licensed under CC BY 4.0 by the author.

덤프파일 Import시 Tablespace의 여유공간이 미치는 영향

Mybatis에서 Dynamic Query를 사용하는 방법