2016-07-18 1 views
0

이것이 유효한 질문조차 확실하지 않습니다. 그러나 나는 나의 상황을 설명하고 당신 같은 전문가들로부터 답을 얻을 것입니다.DB/테이블 레벨에서 모든 DB/TBL에 대한 잠금을 적용 할 수 있습니까?

MS Dynamics가 설치되었습니다. 우리는 매우 느린 성능을 관찰하고 있습니다. 우리는 APP 로그 서버를보고 있습니다. 우리가 여기

"쿼리 실행 시간이 10.seconds 임계 값을 초과"에 대한 두 번째 당 4-5 경고 메시지를 몰래하는 것은 오류 및 관련 쿼리의 예입니다. 쿼리 실행 시간이 27.7 초가 임계 값 인 10 초를 초과했습니다. 글타래 (쓰레드) : 109; 데이터베이스 : Main_MSCRM; 나는 SQL 레벨에서이 쿼리를 실행할 때

select 
top 5001 "systemuser0".QueueId as "queueid" 
, "systemuser0".CreatedBy as "createdby" 
, "systemuser0".Address1_Latitude as "address1_latitude" 
, "systemuser0".Address2_StateOrProvince as "address2_stateorprovince" 
, "systemuser0".Address1_County as "address1_county" 
, "systemuser0".Address2_Country as "address2_country" 
, "systemuser0".Address2_PostOfficeBox as "address2_postofficebox" 
, "systemuser0".PreferredPhoneCode as "preferredphonecode" 
, "systemuser0".new_RegistrationNumer as "new_registrationnumer" 
, "systemuser0".YammerUserId as "yammeruserid" 
, "systemuser0".Title as "title" 
, "systemuser0".SetupUser as "setupuser" 
, "systemuser0".FirstName as "firstname" 
, "systemuser0".EmployeeId as "employeeid" 
, "systemuser0".Address1_Line2 as "address1_line2" 
, "systemuser0".Address1_City as "address1_city" 
, "systemuser0".YomiFirstName as "yomifirstname" 
, "systemuser0".ExchangeRate as "exchangerate" 
, "systemuser0".Address1_ShippingMethodCode as "address1_shippingmethodcode" 
, "systemuser0".YomiMiddleName as "yomimiddlename" 
, "systemuser0".Address2_Line2 as "address2_line2" 
, "systemuser0".DefaultFiltersPopulated as "defaultfilterspopulated" 
, "systemuser0".ModifiedOnBehalfBy as "modifiedonbehalfby" 
, "systemuser0".Address2_Line3 as "address2_line3" 
, "systemuser0".DefaultMailboxName as "defaultmailboxname" 
from 
SystemUser as "systemuser0" 
where 
(("systemuser0".IsDisabled = 0)) order by 
"systemuser0".SystemUserId asc 

지금, 그 결과 2 초 미만에왔다. 내 혼란이 CRM 프런트 엔드 측면에서 더 많은 시간을 필요로하는 이유는 무엇입니까? CRM 프런트 엔드 수준에서 데이터를 렌더링하는 데 걸린 시간 외에도 다른 것을 생각할 수 없습니다.

나의 두 번째 혼란은이 쿼리를 실행할 때와 다른 곳에서 쿼리 자체에 잠금이없는 경고 메시지를받는 경우입니다. 2 초보다 빠른 방법이었습니다.

내가 생각하는 바는 DB 수준에서 적용 할 논리를 작성하고 DB에서 기본적으로 아무런 잠금도 설정하지 않는 쿼리가 무엇이든 적용하는 것입니다.

짝수일까요? 이 경고 메시지를 없애는 방법을 알려주십시오.

감사합니다.

+0

모든 것에 놀림을 적용하는 것이 좋지 않을 것 같습니다. 데이터베이스를 프로파일 링하여 잠금 장치를 식별하고 값 비싼 쿼리가 무엇인지 확인하고 문제의 근본 원인을 파악하는 것이 좋습니다. – Tanner

+0

이것은 의미가 있습니다, 나는 그 특정 DB에서 데이터 프로파일 링을 한 것뿐입니다. 1 분 동안 만 "Lock Acquired"및 "Lock Released"라는 수천 가지가 있습니다. 그것을 분석하는 당신의 생각을 기반으로 한 다음 단계가되어야합니다! – user2040021

+0

당신은 이것을 위해 READ UNCOMMITTED의 격리 수준을 사용할 수 있지만 그렇게하지 않는 것이 좋습니다. 물론 무작위로 중복 및/또는 누락 된 행을 가져 오는 것이 좋습니다. 다른 말로하면 대부분 정확한 결과를 얻는 것이 시원하면 괜찮을 것입니다. http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

답변

0

at SQL level 쿼리를 실행하면 SQL Server 콘솔에서 직접 실행하는지 여부를 알 수 없지만 on CRM Front end side을 실행하는 데 시간이 오래 걸리는 것으로 보이는 이유에 대한 통찰력을 얻을 수 있다고 생각합니다. SQL Server에서 직접 쿼리를 실행하면 대부분 데이터베이스에 대한 활성 연결이 이미 있습니다. 즉, 연결을 설정하기 위해 기다릴 필요가 없으며 두 명의 대기업은 쿼리가 실행될 때까지 기다리고 결과 집합을 받기를 기다리고있을 것입니다.

그러나 CRM 프런트 엔드에서 쿼리를 실행하면 쿼리를 시작하기 전에 연결을 설정해야 할 수 있습니다. 연결 설정은 생각보다 오래 걸릴 수 있습니다.

이렇게 좋은 테스트는 다음과 같습니다. CRM 프런트 엔드에서 두 번 연속 쿼리를 실행하고 각 쿼리의 실행 시간을 계시하십시오. 두 번째 쿼리가 훨씬 빠르게 실행되면 SQL Server와의 연결 설정 비용을 발견했을 수도 있습니다.

+0

잘못된 쿼리 계획도 마찬가지입니다. – Tanner

+0

당신은 절대적으로 맞지만 현재 다이나믹스에 살고있는 300 명이 넘는 사용자가 있습니다. 이제 내가 위에 게시 한 쿼리에 대한 사용자를 찾고 그 사용자에게 가서 전체 프로세스를 다시 반복하는 방법이 있습니다. 앱 로그에는 사용자에 대한 정보가로드되지 않습니다. – user2040021

+0

이 경고 메시지를 특정 사용자와 관련시킬 수있는 방법이 있습니까? 예를 들어, Tim이 언급 한대로 그 사용자가 정확히 무엇을 검색했는지 알아 내고 두 브라우저에서 동일한 작업을 수행하도록 요청할 수 있습니다. – user2040021

0

아마 ado.net에서 명령 시간이 초과되었지만 Management Studio에서 정상적으로 작동하는 것과 같은 유명한 문제 일 수 있습니다. 나는 거기 몇 가지 수정 사항이 있다고 생각하지만 쿼리 제어 할 수 없기 때문에 내가 강하게 쿼리 실행 계획을 실행하는 것이 좋습니다 질문

DBCC DROPCLEANBUFFERS 
DBCC FREEPROCCACHE 
+0

좋아, 이거 해봐. – user2040021

0

의 DB에서이 두 명령을 시도는거야 그래서 색인을 추가하여 u 리를 향상시킬 수 있는지 알려줍니다.

또한 왜 한 번에 5k 개의 레코드를 가져 오려고합니까?그것은 사용자 정의 코드 또는 무언가에서 생성 된 것입니까? CRM 조회수는 그보다 작습니다 (예 : 50-200 건). 이렇게 많은 레코드를 한꺼번에 가져 오면 데이터베이스 잠금 가능성을 높일 수 있습니다.

+0

Jordi 현장에 올랐습니다. 맞춤 코드입니다. SQL Server에서 쿼리를 실행할 때 27 행만 얻습니다. 이 쿼리는 항상 TOP 5001이있는 CRM에서 생성되며, 나는 이유조차도 모릅니다. 내가 CRM을하는 사람이 아니기 때문에 그걸 어떻게 할 지 모르겠다. – user2040021