2013-01-12 2 views
3

메신저 프로젝트에서 현재 MS SQL Server 2008을 사용하고 있습니다.최대 절전 모드에서 MS SQL Server의 동시 실행 속도가 느림

우리 솔루션에 대한 성능 테스트를 수행 한 결과 일부 쿼리를 실행하는 데 걸리는 시간이 매우 느린 것으로 나타났습니다.

예 : 시스템에 트랜잭션이 하나만있는 경우 select 쿼리를 실행하는 데 걸리는 시간은 약 40ms입니다.

동시성이 높으면 선택 쿼리를 실행하는 데 걸리는 시간이 동일한 쿼리에 대해 최대 30 초가 걸릴 수 있습니다.

어쨌든 데이터베이스를 조정할 수 있습니까?

이것은 Hibernate가 생성 한 쿼리입니다.

SELECT . . . 
FROM TERMINAL this_ 
LEFT OUTER JOIN MERCHANT merchant2_ ON this_.MERCHANT_FK=merchant2_.ID 
LEFT OUTER JOIN MOBILE_USER mobileuser3_ ON this_.MOBILEUSER_FK=mobileuser3_.ID 
LEFT OUTER JOIN MERCHANT merchant4_ ON mobileuser3_.MERCHANT_FK=merchant4_.ID 
WHERE this_.MOBILEUSER_FK=7 AND this_.STATUS='ACTIVE' LIMIT 1 
+0

안녕하세요. Markover 님, 저는 stackoverflow 작동에 대해 잘 모르는 것에 대해 사과드립니다. 나는 항상 대답을 upvoted했지만 체크 표시에 대해 몰랐습니다. –

+0

이것은 Hibernate가 생성 한 질의이다. SELECT . . . merchant2_ ON this_.MERCHANT_FK merchant2_.ID = LEFT OUTER 조인 MOBILE_USER mobileuser3_ ON this_.MOBILEUSER_FK mobileuser3_.ID = LEFT OUTER 조인 MERCHANT merchant4_ ON mobileuser3_.MERCHANT_FK = merchant4_.ID this_ LEFT OUTER가 MERCHANT 가입 this_ TERMINAL FROM . MOBILEUSER_FK = 7 AND this_.STATUS = 'ACTIVE'LIMIT 1 –

+0

귀하의 게시물을 편집하여 검색어를 추가했습니다. 분명히 논쟁을 일으킬만한 것을보기를 희망했습니다. 누군가 좋은 아이디어가 떠오르는 지 알 수 있습니다. 행운을 빕니다! – MarkD

답변

-1

테이블에 데이터가 너무 많으면 빠를 수 있습니다.

SELECT . . . 
FROM TERMINAL this_ 
LEFT OUTER JOIN MOBILE_USER mobileuser3_ ON this_.MOBILEUSER_FK=mobileuser3_.ID 
LEFT OUTER JOIN MERCHANT merchant4_ ON mobileuser3_.MERCHANT_FK=merchant4_.ID 
WHERE this_.MOBILEUSER_FK=7 AND this_.STATUS='ACTIVE' and 
this_.MERCHANT_FK in (SELECT merchant2_.ID FROM MERCHANT merchant2_) 
+0

-1 OP는 ORM을 사용하므로 SQL을 생성합니다. 전문적으로 다소 ORM의 목적을 무효화합니다. 또한 'LIMIT'은 SQL Server에 유효하지 않습니다. –

+0

그의 첫 번째 게시물을 확인해야합니다. 생성 된 쿼리에는 제한이 있습니다. 현재 쿼리가 생성되는 방식과 조건을 모릅니다. Limit는 MYSQL의 조건이며 MSSQL 내에 존재하지 않는다는 것을 알고 있습니다 ... – Taicho

+0

친애하는 모든 것, 나는 MySQL Db에 연결할 때 쿼리를 생성했습니다. 우리가 생산을 위해 가지고있는 MSSQL 2008 R2 서버에는 동일한 쿼리가 사용됩니다. (제한 없음). MSSQL Server 프로파일 러 도구를 사용하여 쿼리 프로필을 작성하고 실행 시간이 빠름을 확인했습니다. 쿼리는 밀리 초 단위로 완료됩니다. 인스턴트 메신저로 연결 풀에 문제가있는 것 같습니다. –

관련 문제