● 가상 데이터 입력할 테이블 생성

CREATE TABLE TEST(
	V1 VARCHAR2(100), 
	V2 VARCHAR2(100), 
	V3 VARCHAR2(100), 
	V4 VARCHAR2(100), 
	V5 VARCHAR2(100), 
	V6 VARCHAR2(100), 
	V7 VARCHAR2(100), 
	V8 VARCHAR2(100), 
	V9 VARCHAR2(100), 
	V10 VARCHAR2(100)
);

 

 

● 100만건 입력 스크립트 실행

INSERT INTO TEST
SELECT
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000),
	ROUND(DBMS_RANDOM.VALUE() * 1000000000)
FROM
	DUAL
CONNECT BY
	LEVEL <= 1000000

 

 

● 입력 속도 확인 결과 / DBeaver v25.0.0 

 

 

● 입력 속도 결정적 장비 정보 - I/O HDD, M.2 GEN5 SSD

 

 

● 백만건 집계 / 0.3초

 

 

 

● 추가 백만건 입력 및 입력에 따른 테이블스페이스 변화 / 9초

 

- 백만건 입력 전 용량 / 133MB

 

- 백만건 입력 후 용량 / 257MB / 2배 증가(최초 테이블스페이스 사용 기준)

 

 

● 대부분 회사의 입출력 장치(SATA or SAS)에 만든 테이블스페이스 테스트

 

- 종전 입출력 하드웨어 스펙

 

- 대부분 서버 장비 입출력 하드웨어 스펙

 

눈으로 보이는 성능 차이는 62배. 그럼 실질적으로 느린 장치에다 테이블스페이스 만들고 동일하게 성능 테스트

 

 

● 2GB 테이블스페이스 생성 / 느린 하드라 그런가 11초 걸림

CREATE TABLESPACE TEST
   DATAFILE '/PATH.../.../test.dbf'
   SIZE 2048M
   AUTOEXTEND ON
   NEXT 4M MAXSIZE UNLIMITED
   LOGGING PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE
   BLOCKSIZE 8K
   SEGMENT SPACE MANAGEMENT MANUAL
   FLASHBACK ON;

만들고 봤더니 기존 대비 10배 크게 만듬 

 

 

● 만든 거 삭제 

 

 

● 초기 100MB 용량으로 테이블스페이스 다시 생성

 

 

● 해당 영역으로 테이블 생성

 

 

● 입력 테스트 / 10초 / M.2와 같음.. ㅎㅎ

 

 

● 추가 100만건 입력 후 테이블스페이스 변화

- 각 200만 데이터가 들어있는 USERS, TEST 테이블스페이스 용량 비슷해짐 

 

 

● 각 200만건 있는 TEST, TEST2 테이블 조회 

결국 둘 다 조회 속도 같음

 

 

● 결론

DB에서 M.2 SSD 단순 입력/조회 성능은 같다??? I/O 62배 차이눈??  상관 없는겨??

랜덤 액세스에서 차이 나는겨?? 일단 요기까지 

 

 


+ Recent posts