Backend/Database

7600만건 데이터는 용량이 얼마나 될까?

mopil 2023. 9. 28. 15:30
반응형

회사에서 사용하는 디비가 용량 이슈가 생겼던 적이 있는데, 그 당시 대강 보니 80TB 정도였다.

 

그래서 문득 1억건 정도 되는 데이터는 용량이 얼마나 될까?라는 생각을 가지게 되어서 테스트를 해보았다.

 

테이블 필드 타입, 수 그리고 인덱스 유무에 따라 다르겠지만, 그냥 가늠용으로 참고만 하면 좋을 것 같다.

 

디비는 MySQL이고 테스트 테이블은 위와 같이 생겼다.

여기에 write_date는 인덱스를 걸어놨다.

 

테스트 데이터는 7600만건 정도 넣어봤다.

해당 데이터는 AI허브에서 제공하는 인터넷 말뭉치 데이터인데, JSON형태로 제공해줘서 반복문으로 쉽게 집어넣었다.

 

JDBC 배치 insert로 넣으니 50만건 넣는데 10초정도 걸렸다. (7600만 / 50만 = 152 * 10초 = 1520초 = 25분)

배치 insert는 auto increment여도 성능이 아주 어썸해서 얼마 안 걸렸다.

 

(여담으로 JPA는 PK를 auto increment로 하면 배치 insert가 안되기 때문에 insert 쿼리가 row 하나당 하나.... 나가서 굉장히 느려진다. 거기에 추가로 next PK값 조회 select 쿼리도 추가되서 한 row insert 할 때 마다 쿼리가 2번 나간다. 물론 PK를 auto increment로 하지 않는다면 JPA도 배치 insert가 가능하다.)

 

 

MySQL 디비 데이터 저장 위치는 https://mopil.tistory.com/91 이 글을 참조하면 된다.

 

MySQL 데이터는 어디에, 어떻게 저장되는 걸까?

문득 MySQL에서 진짜 데이터를 어디에, 어떻게 저장하는지 궁금해서 찾아봤다. MySQL 데이터 저장 위치 조회 SQL로 show variables like 'datadir'; 을 입력하면 value로 MySQL 데이터가 어떤 위치에 저장되고 있

mopil.tistory.com

 

7600만건 데이터는 용량이 얼마나 될까?

 

무려 20GB나 한다 ㅎㄷㄷㄷ

 

단순 전체 카운트 쿼리는 1분이나 걸리고

 

인덱스 추가는 5분정도 걸린다.

역시 인덱스는 데이터가 적을 때 생성하는게 좋은 것 같다.

 

 

데이터셋은 요런식으로 생겼다.

 

재미삼아 넣어봤는데 생각보다 용량을 많이 차지해서 놀랐다... 

반응형