안녕하세요. 독학 3년차 웹개발자입니다. 그누보드 기반 php언어를 주로 사용하는 개발자 인데요.
다름이 아니라 현재 운영중인 사이트가 3만명 정도의 회원을 가지고 있는데 1명당 10개의 데이터를 매주 인서트 하는 작업이 필요한데요.
이미 구축은 다 되있는데 회원수가 점점 늘어가면서 부하가 심해져서 질문드립니다.
앞서, 약 3만명에 회원이라하면 30만row 의 데이터를 다른테이블에 저장해두는 방식입니다.
연산만 약 3만 x 30만 정도로 예상을 하고 그사이에 구분코드 가공 쿼리로 업데이트 인서트등이 다수 존재합니다.
먼저 조취를 취한부분은, 사양을 조금 업그레이드 해보았습니다. 메모리 8G -> 16G로 업그레이드 해주었고, 서버 환경설정도 구글링을 통해 최대한 적용해 보았습니다.
또한 쿼리 로직도 for문으로 10row 개별처리를 스트링배열로 묶어서 1명당 10row씩 1쿼리로 묶어서 처리하도록 변경하였습니다.
슬로우 쿼리는 잡히지 않는것으로 확인되고, qps는 2500시작해서 30대까지 떨어지는 무지막지한 부하가 생기고 1주일째 꽁꽁 싸매도 해결되지 않아서 이렇게 질문 남깁니다.
혹시 DB스키마 자체가 잘못인지, 혹은 물리적인 사양 문제인지, 단순 데이터양이 많아서인지, 로직이 문제인지 정확히 파악이 안됩니다.
복합적인 문제라고 예상은 하고 있으나 혹시 개선방안이 있을지 조언 여쭙니다.
ps. 부하분산법) 서브테이블에 미리 작업후 업데이트 시키는 방식은 자제하려고 합니다. 회원정보가 바뀌면서 데이터 민감도가 높아서 선호하지 않는 방식입니다.!