데이터가 많은 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에 일력하는것 같네요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
데이터가 하루에 100만건정도 insert 되어버리는데
날짜를 하루단위로 테이블을 생성해서 파티셔닝을 나눠야하나요?
키값을 날짜로 잡아도 가능한가요?