2012-04-11 6 views
0

이전 방식과 최대 절전 모드를 사용하여 데이터베이스 "업데이트"성능을 비교하고 있습니다.최대 절전 모드 executeUpdate 성능

내 데이터베이스 구조는 문서 -> 코드 -> Code_Details입니다. 상위 테이블과 하위 테이블간에 일대 다 관계가 있습니다.

이제 데이터베이스에서 업데이트해야하는 Code_Details 항목이 약 850 개 있습니다.

public void executeDBUpdate(int status1, int status2, int status3){ 
... 
... 
Query query = session.createQuery("update Code_Details set status1=:status1, status2=:status2,status3=:status3);   
query.setParameter("status", status_); 
     query.setParameter("status1",status1); 
     query.setParameter("status2",status2); 
     query.setParameter("status3",status3); 
     query.executeUpdate(); 
     HibernateUtils.commitTransaction("emscribedx"); 

... 
} 

두 버전 모두 내 "executeDBUpdate (INT, INT에 유의하시기 바랍니다 :

다음
public void executeDBUpdate(int status1, int status2, int status3){ 
... 
... 
java.sql.Statement statement = connection.createStatement(); 
statement.executeUpdate("update Code_Details set status1="+status1+", status2"+=status2+", status3="+status3"); 

... 
} 

가 최대 절전 모드 버전입니다 : 아래

두 배 빠르게 수행하는 옛날 방식이다 , int) "메서드는 각 데이터베이스 업데이트를 실행하기 위해 850 번 호출됩니다.

954 milliseconds 

최대 절전 모드와 똑같은 850 업데이트를 실행하는 총 시간은 다음과 같습니다 : 나는 그것을 부수고 주목

1979 milliseconds 

들 (850)을 실행하는 총 시간은 기존의 방법입니다 업데이트 Hibernate 버전의 대부분은 "query.executeUpdate()"-> 954 milliseconds와 "hibernateTransaction.commit()"-> 750 밀리 초가 걸린다.

많은 업데이트를 실행할 때 최대 절전 모드 성능을 향상시킬 수 있습니까?

+0

그래서 대부분의 차이는 Hibernate 버전이 각 업데이트 후에 트랜잭션을 커밋한다는 사실에 기인합니다. 맞습니까? – axtavt

+0

예. 나는 Hibernate 버전에서 대부분의 시간이 각 업데이트에 대해 executeUpdate()와 commit()을 사용한다는 것을 알아 차렸다. – Marquinio

답변

0

좋아요. 저는 이제 같은 트랜잭션 내에서 "query.executeUpdate()"를 850 번 호출하고 처리 시간을 단축했습니다. 기본적으로 "query.executeUpdate()"는 850 회 호출되지만 session.commit()은 한 번만 호출됩니다.