7600만건 데이터는 용량이 얼마나 될까?
회사에서 사용하는 디비가 용량 이슈가 생겼던 적이 있는데, 그 당시 대강 보니 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 이 글을 참조하면 된다.
7600만건 데이터는 용량이 얼마나 될까?
무려 20GB나 한다 ㅎㄷㄷㄷ
단순 전체 카운트 쿼리는 1분이나 걸리고
인덱스 추가는 5분정도 걸린다.
역시 인덱스는 데이터가 적을 때 생성하는게 좋은 것 같다.
데이터셋은 요런식으로 생겼다.
재미삼아 넣어봤는데 생각보다 용량을 많이 차지해서 놀랐다...