본문 바로가기
IT/Java

deleteAll(), deleteAllInBatch(), deleteInBatch()

by 성준하이 2024. 1. 26.
반응형
deleteAll()

 

delete로 해당 id를 하나하나 있는지 검사하면서 지움

N수 만큼 반복문이 돌게 된다.

deleteAll()은 성능이슈로 인해 거의 사용하지 않는다.

대용량의 데이터가 있을경우 for문을 하나하나 돌면서 사용하기 때문에 보통 천만건이 넘는 것을 사용할 경우 deleteAllInBatch를 사용한다.

 

실제 hibernate 쿼리

select
   a,b,c
from
   table ;

//n 수만큼 반복
delete from table where id = ?;
delete from table where id = ?;
delete from table where id = ?;

 

 

deleteAllInBatch()

 

findAll이나 findById를 사용하지 않았기 때문에 delete이전에 select하는 과정은 없고 해오지 않고 오로직 delete만 한다.

대용량일 수록 우수한 성능을 내게 된다.

 

실제 hibernate 쿼리

delete from table;

 

 

deleteInBatch()

 

1번 deleteAll과 비슷하게 조회 쿼리는 발생한다.

그리고 삭제를 할 경우에 하나씩 반복문이 아닌

or 조건으로 삭제할 컬럼들을 이어 붙인다.

deleteAll은 조회해서 값이 없으면 pass이나 deleteInBatch()는 값이 있든 없든 무조건 delete 문을 발생 시킨다.

 

실제 hibernate 쿼리

select
   a,b,c
from
   table ;

//n 수만큼 반복
delete from table where id = ? or id =? or id =?;

 

반응형

댓글