이것이 유효한 질문조차 확실하지 않습니다. 그러나 나는 나의 상황을 설명하고 당신 같은 전문가들로부터 답을 얻을 것입니다.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에서 기본적으로 아무런 잠금도 설정하지 않는 쿼리가 무엇이든 적용하는 것입니다.
짝수일까요? 이 경고 메시지를 없애는 방법을 알려주십시오.
감사합니다.
모든 것에 놀림을 적용하는 것이 좋지 않을 것 같습니다. 데이터베이스를 프로파일 링하여 잠금 장치를 식별하고 값 비싼 쿼리가 무엇인지 확인하고 문제의 근본 원인을 파악하는 것이 좋습니다. – Tanner
이것은 의미가 있습니다, 나는 그 특정 DB에서 데이터 프로파일 링을 한 것뿐입니다. 1 분 동안 만 "Lock Acquired"및 "Lock Released"라는 수천 가지가 있습니다. 그것을 분석하는 당신의 생각을 기반으로 한 다음 단계가되어야합니다! – user2040021
당신은 이것을 위해 READ UNCOMMITTED의 격리 수준을 사용할 수 있지만 그렇게하지 않는 것이 좋습니다. 물론 무작위로 중복 및/또는 누락 된 행을 가져 오는 것이 좋습니다. 다른 말로하면 대부분 정확한 결과를 얻는 것이 시원하면 괜찮을 것입니다. http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –