백업받아둔 mysql을 편집/머지하려고 xampp 설치해서 로컬에 mysql 환경을 만들었는데요...
이게 각각 파일이 행 개수가 22만개가 넘어가다 보니 용량도 20메가, 80메가씩 되어서
shell 에서 직접 mysql -u root -p test -f < name.sql 으로 가져오는데
엄청나게 오래 걸리더라구요...
80메가 짜리는 테이블에 등록되는 속도보니
새로고침 한번에 50개 정도씩 등록되는데... 22만개 다 등록하려면 하루종일 걸리겠더라구요
너무 가져오는 속도가 답답한데 왜 이렇게 느린거지... I/O가 느려서 그런가? 생각하다보니
xampp 설치도 .sql파일도 모두 하드에 있더라구요
그래서 ssd로 옴겨서 해볼까 하다가 정말 드라이브 I/O가 느려서 그런거라면 차라리 램에다가 시도해보자 생각하고
램디스크 5기가 짜리 하나 만들어서 xampp 램디스크에 재설치하고 .sql 파일도 램디스크에 올린후에
shell 에서 import 시켰더니...
맙소사! 새로고침 한번할때마다 약 1000~1500행이 등록되네요??
하드에서는 새로고침 한번에 50개인데 램에서는 1000개이상...??
하드와 램 속도의 차이가 크다는것은 잘 알고 있었지만... 몸으로 체감해보니 엄청나게 크네요
혹시 디비를 램에서 돌리는 기술도 사용되고 있을지 문득 궁금해졌습니다 ㅎㅎ
아무래도 휘발성이다 보니 클라이언트<->서버 연결만 램에서 처리되고
서버단에서는 insert/update 등이 되면 별도의 저장장치로 변경분을 append 해줘야 될거같긴한데..
일반적인 사용에서는 램까지 필요없어서 그러려나.. 아니면 2중부하가 생겨서 그럴까요?
디비를 램에 올려서 사용한다는 말은 아직 못들어본거 같네요.. ㅎㅎ
하드는 끽해야 1초에 100메가쯤 읽고 쓰는 수준이고, 램은 1초에 수십기가가 기본이지요. DB 작업 같은 랜덤 I/O가 들어가면 하드가 훨씬 더 불리하고요. 램의 R이 랜덤이라는 뜻이잖아요! ㅎㅎ
PCIe 확장카드에 램 몇개 꽂아놓고 배터리를 추가해서 전원이 끊겨도 데이터가 유실되지 않도록 만든 물건이 있기는 합니다. 그러나 일반인이 쓸 일은 없을 것 같고요... 인텔에서 야심차게 추진하고 있는 옵테인이 지금보다 더 빨라지면 비슷한 역할을 수행할 수 있을지도 모르겠네요. 요즘 많이 나오는 NVMe SSD만 해도 초당 2기가를 훌쩍 넘어가니 이미 절반의 혜택은 누리는 셈이고요.
그러나 DB 80메가 복원하는 데 그렇게 시간이 걸린다면 하드냐 램이냐의 문제가 아니라 xampp 튜닝 상태가 워낙 저질이라서 그럴 가능성이 더 높아 보입니다. 트랜잭션 없이 다수의 레코드를 복원하는 것은 완전 삽질이죠. ㅋㅋㅋㅋ