피자7
607
2020-08-20 10:05:57
2
308

현업에서 실제 db쿼리 응답속도가 평균 어느정도인가요


현재 포트폴리오용 프로젝트 하나 만들고있는데

일종의 온라인 게임이라 실시간으로 계속해서 데이터를 바꿔야합니다

(10초 미만 간격)


몽고db를 사용중인데 테스트할때 도큐먼트가 하나 있을땐

쿼리 실행속도가 평균 약 3.5ms 정도 나오는데

보통 웹에서 응답속도가 평균 몇인지 모르니 이게 느린건지 빠른건지 모르겠네요

웹에서 온라인 게임인 만큼 응답속도가 중요한 부분이라 

지금은 어디까지나 거의 비어있는 db에서 테스트할때의 속도지

실제 db에 있는 데이터가 많을땐 얼마나 느려질지도 모르겠네요

0
  • 답변 2

  • 코리갑
    98
    2020-08-20 10:53:33

    실제로 db에 데이터가 몇줄이나 넣으시게요?? 그거에따라 달라지지싶은데용 

    부장님이 그러시는데 실제 현업에서 테이블 하나에 1억줄 넘어가기도 한다는데요

    그러면 색인인지 인덱스인지를 잘처리해야된데여 안그러면 매우느리다네요


  • HJOW
    1k
    2020-08-20 11:13:39 작성 2020-08-20 11:21:18 수정됨

    "반응 속도" 자체는 어쩔 수 없이 최소한의 소요시간이 발생합니다.

    데이터 수가 아무리 많아도 몇만건까지는 3.5ms 앞뒤 왔다갔다하다가

    데이터수가 엄청 많아져야 조금씩 느려지기 시작할겁니다.


    DB가 아니라 같은 서버내에 설치된 하드디스크내 파일에서 데이터 읽고 쓰는것도 그정도 반응속도로 나올껄요. SSD가 아닌 이상에야...


    하드디스크를 얘기하는 이유는

    몽고DB든 오라클이나 마이SQL 같은 관계형 DB도 결국에는 단순히 데스크탑에서 돌아가는 프로그램일 뿐입니다. SQL문을 써서 입력을 해도 결국에는 파일로 만들어져 하드디스크에 저장되고, 조회할 때는 하드디스크에서 조회하게 되기땜시 하드웨어의 영향을 무조건 받습니다.




    데이터 입출력이 잦은 프로젝트라면 (3.5ms도 허용이 안될 정도로)

    어쩔 수 없이 캐싱을 구현해야죠... 전역변수 같은데다 대기열(Queue)만들어 변경사항들을 집어넣어놓고 여유될 때 한번에 처리하게끔...

    코딩할 때 선언하는 변수들은 실제로는 메모리(램)에 저장됩니다. 변수에 들어간 데이터를 바로 사용한다는 건 램에 저장된걸 사용한다는 겁니다. 램은 하드디스크나 SSD에 비해 100배이상 빠릅니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.