질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix

쿼리가 거의 실시간으로 생성되고 Update 요청을 하는데.. 혹시 서버에 영향을 주는지 궁금합니다.

속도가 느려지거나 마비되거나 할 수 있나요? 아, 참고로 쿼리 용량은 텍스트인지라.. kb단위로 매우 작습니다.

단지 아까 말했던 것 처럼 실시간으로 update 요청이 많습니다. (일 최소 만개 이상은 넘어요 월으로는 20~30만개)

  • profile

    무엇이든지 많으면 당연히 성능에 영향을 줄 수 있습니다. 다만 그 영향을 사람이 느낄 수 있는지가 관건인데요. 저사양 서버나 웹호스팅이라면 하루 1만 개도 부담이 될 수 있고, 고사양 서버라면 하루 1억 개도 거뜬할 수 있습니다.

     

    쿼리 종류나 용량은 크게 중요하지 않습니다. 변경할 레코드를 찾는 과정이 얼마나 효율적인가, 레코드를 몇 개나 변경하는가, 변경에 영향을 받는 인덱스가 얼마나 많은가, 쿼리가 순차적으로 들어오는가 동시에 들어오는가 등이 성능면에서 더 큰 영향을 줍니다. 예를 들어 하루 1만 개라면 평균 8초에 1개인데, 피크시간대에는 2~3초에 1개가 될 수도 있겠지요? 쿼리 실행에 2~3초 이상 걸린다면 2개 이상의 update가 동시에 들어갈 수 있습니다. DB가 어떻게 설계되어 있는지에 따라 lock이 걸려서 갑자기 확 느려질 수도 있는 상황이지요. 동일하거나 인접한 레코드를 동시에 update한다면 InnoDB라도 lock을 피할 수 없습니다.

     

    그런데 update 쿼리 용량이 kb 단위로 나온다면 아주 가벼운 쿼리는 아닐 것 같습니다. 조회수 갱신, 추천수 갱신, 포인트 획득 등 RXE 코어에서 실시간으로 사용하는 대부분의 update 쿼리는 100바이트도 안 되거든요. update가 kb 단위라면 상당히 큰 겁니다;;; 대량의 텍스트를 매번 업데이트하거나, 다수의 레코드를 건드리시는 것 같네요. 즉 용량이 크게 중요한 것은 아니지만, 용량이 큰 update 쿼리가 빈번하게 발생한다면 그런 쿼리를 유발하는 프로그램 자체가 비효율적으로 설계되었다는 힌트일 수 있습니다. 그렇지 않더라도 대량의 update로 DB가 파편화되어 점점 성능이 안 좋아질 가능성도 있고요.

  • profile profile
    ㄷㄷ.. 그렇군요. 전문가다운 답변 감사합니다. 그리고 아직은 바이트 단위였네요 으잌ㅋ 잘못 봤..ㅠㅠ
    암튼 감사합니다! 좀 더 연구해봐야겠어요 ㅎㅎ
  • ?
    쿼리 많으면, 영향을 줍니다만, 서버 다운될 정도는 아닙니다. 결론은 약간이라도 영향을 줍니다.
    그래서 aws와 gcp도 쿼리 비용을 받습니다.
  • ? profile

    그렇군요 ㅎㅎ 다행이네요~