DEV95
20
2020-11-27 15:02:50
2
235

웹페이지 성능이 너무 떨어집니다. 속도개선을 해야하는데 좀 도와주세요 ㅠㅠ


웹서버와 디비서버 분리해서 사용중이고

스프링 부트 사용중입니다.

웹 서버 성능은 CPU Xeon E5-2673 v5 2.30GHz 2.29 GHz / RAM 8기가 입니다.

디비 서버 성능은 CPU Xeon E5-2673 v5 2.30GHz 2.29 GHz / RAM 16기가 입니다.


페이지를 넘길때 해당 페이지에서 작성된 문항값들을 저장하고 다음 작성할 문항을 불러오는데

작성된 문항 값을 저장할때

자바스크립트에서 arraylist 생성에서

["seq","name","code","result","기타값"]

["seq","name","code","result","기타값"]

["seq","name","code","result","기타값"]

["seq","name","code","result","기타값"]


["seq","name","code","result","기타값"]

이런식으로  20줄 정도 자바로 넘기면

자바에서는 그 리스트 그대로 mybatis mapper 에

파라미터로 던지고 mapper 에서 foreach 

(insert into 디비명 SAVE_Result

(컬럼1,컬럼2,컬럼3,컬럼4컬럼5,컬럼6,컬럼7,컬럼8,컬럼9)

values

<foreach collection="list" item="item" separator=",">

(#{item.컬럼1},#{item.컬럼2},#{item.컬럼3},#{item.컬럼4},

#{item.컬럼5},#{item.컬럼6},#{item.컬럼7},#{item.컬럼8},#{item.컬럼9})

</foreach>)

먼저 무조건 딜리트로 한번 돌면서 기존에 값이 있던 없던 삭제하고 인서트로 똑같은 값을 다시 넣어요.

접속자 1명일땐 1초 이내로 빠르게 넘어가는데

동시접속자가 10명만 넘어가도 6초 10초 심지어 15초까지도 걸립니다.


해결 방안이 있을까요 ?




0
  • 답변 2

  • 팩트폭행범
    2k
    2020-11-27 15:05:52
    db 실행계획 검색 ㄱㄱ 
  • SONGJAVA Developer
    241
    2020-11-27 15:44:58

    지금 생각난거는 로직상에서 해결할방법이 있다면


    현재 REQUEST에 대해 컨트롤러에서 DELETE, INSERT 관련 쿼리실행을 우선 제외시키구

    현재화면에 출력에 대한 정보만 먼저 빠르게가져오게해서

    사용자에게 (Browser 또는 모바일 APP 또는 API) 화면/결과를 먼저 내보내주구 난 이후에


    후 처리로 DELETE, INSERT를 수행하는 방법을 해보시기 바랍니다.


    SELECT에는 트랜잭션 안걸리게 설정해보시구

    그리고 만약 select 쿼리가 필요없는 컬럼 및 조인까지 있다고하면, SELECT에는 필요한 컬럼과 JOIN만 해주시구 

    resultType에도 select에 사용할 컬럼만 명시하시고 모델에도 사용할 컬럼만 지정만 해도 

    빨라질거에요.


    INDEX도 중요하구요, ORDER BY 등..

    혹여나 테이블 컬럼이 불필요하게 엄청많다면 테이블을 쪼개보셔도 돼구,

    아니면 데이터자체가 너무많은 테이블이라면

    DB VIEW나, 프로시저를 사용해서 조회해보시기 바랍니다.

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