2011-03-26 7 views
4

봄에 Mysql 5에서 최대 절전 모드 3.0을 사용하고 있습니다. JBOSS에서 JNDI 데이터 소스를 구성하고이를 응용 프로그램 컨텍스트에서 사용했습니다.Hibernate MySQL에서 너무 많은 쿼리를 실행 중

내 문제는 Hibernate가 웹 사이트에 거의로드하지 않고 초당 평균 466.4 개의 쿼리를 데이터베이스에 발행한다는 것이다. 나는 자바 수준에서 JTA 트랜잭션을 사용하고

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton"> 
    <property name="jndiName" value="java:MyCustomDSName" /> 
    <property name="resourceRef" value="true" /> 
</bean> 

ApplicationContext.xml 조각입니다. 도움을 환영합니다. DEV의 가능성 - 이들의

+1

이러한 검색어는 무엇입니까? 초당 웹 서버의 히트 수는 얼마입니까? –

+0

초당 466 개의 쿼리 이러한 쿼리는 HQL 쿼리입니다. 그러나 나는 문제가 있다고 생각한다. 아마도 쿼리를 실행하는 것이 지연 초기화 (Lazy initialization) 일 것입니다. –

+0

SQL 로깅을 활성화하여 실제로 진행중인 작업을 볼 수 있습니다. 이것이 없다면, 당신은 어둠 속에서 방금 촬영하고있는 것입니다. – mindas

답변

1

하나는 경우 당신은/처리 너무 많은 요청을 받고있어

  • 을해야합니다.
  • N + 1 선택 조건이 있습니다. 매우 일반적입니다.

도메인 모델과 실행중인 쿼리를 게시하십시오.

0

어떻게 JTA 트랜잭션을 사용하고 있습니까? 모든 Java 메소드에 새 트랜잭션이 필요하다고 표시되면 문제의 일부를 설명 할 수 있습니다. 또한, 당신의 Hibernate 객체 관계는 재검토되어야한다. 복잡한 관계가 있거나, 모델 관계 또는 순환 관계에 정의 된 열심히로드 된 많은 오브젝트가있는 경우 해결하기가 더 어려울 수 있습니다.

관련 문제