데이터가 많은 db insert 슬로우 쿼리

데이터가 많은 db insert 슬로우 쿼리

QA

데이터가 많은 db insert 슬로우 쿼리

본문

insert into rcpl_doc_KeyVal(
            uk_no,
            ex,
            ta,
            val,
            scsDate
        )values(
            (select IFNULL(max(uk_no)+1,1) from rcpl_doc_KeyVal af),
            '#{ex}' ,
            #{ta},
            #{val},
             (select DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S') from dual)
        )

 

대략 이런 insert 쿼리입니다.. 

현재 실 데이터가 400만건 넘게있는데 이게 특정 url을 접속할때마다 쌓여갑니다. ( 초당20번정도 접속)

이경우 서버 cpu 사용률이 100프로를 뚫어서 400프로까지 가버리는데

테이블을 나눠야 하는지 아니면 다른 insert 최적화 쿼리가 있는지 궁금합니다.

 

 

이 질문에 댓글 쓰기 :

답변 3

파티셔닝 하시면 됩니다. 개수는 대략 100만개로 잡으시면 될것 같네요. 키값을 잘 정해서 진행하셔야 하구요. 조회가 빈번하면 마스터 슬레이브 형태로 디비 이중화도 필요합니다. 

 

ps)쿼리를 보면 mybatis 를 사용하여 oracle에 일력하는것 같네요.

좋은 정보및 조언감사합니다.
데이터가 하루에 100만건정도 insert 되어버리는데
날짜를 하루단위로 테이블을 생성해서 파티셔닝을 나눠야하나요?
키값을 날짜로 잡아도 가능한가요?

서브쿼리가 2개나 돌아가서 그런듯한데

db구조 설계를 다시해보시는게 어떨지요

그리고 타 테이블에 인덱스를 걸어놓고 최대한 빨리 데이터를 참조할수 있게 하는 수 밖에 없지싶네요.

DB 최적화가 너무 복잡해서 저같은 경우에는

서버 사양을 올렸습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 818
QA 내용 검색
filter #DB ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT