2017-05-24 10 views
0

XML EXPLICIT 쿼리에 대해 SQL 2005 서버를 실행해도 성능상의 문제없이 매우 만족 스럽습니다. 컴퓨터 (Windows 2003 서버)는 불행히도 사망하여 Windows 2012 상자의 긴급 조항을 수행해야했습니다. 데이터베이스 파일이 2008r2 및 "작업"에 다시 첨부되었습니다. 그러나 쿼리는 끔찍하게 느립니다. 이전에 .x 시간대에 있었을 때 쿼리 당 5 초. 이것은 그들이 사용할 수없는 웹 사이트를 만듭니다. 모든 인덱스를 다시 작성했지만 모든 컴퓨터에서 DBCC FREEPROCCACHE를 실행했지만 눈에 띄는 효과는 없었습니다. 내가 뭘 더 볼 수 있니? 일부 쿼리는 비 ANSI * = 조인을 사용하기 때문에 상자의 2016 SQL 인스턴스에서 실행할 수 없습니다 (이전 버전이라고!).서버 전송 후 SQL 성능이 좋지 않음

+1

쿼리 계획을 보았습니까? –

+0

모든 DB 통계, 결과 캐시 및 기타 데이터가 손실되어 다시 작성해야하는 등 여러 가지 이유가있을 수 있습니다. 서버가 사용 중일 때 느리게 개선되는 것을 보시겠습니까? 아니면 지금 다운 되었습니까? 그것을 사용하여 시작하고, 잃어버린 데이터가 다시 빌드되면서 점점 빨라지는지 볼 가치가 있습니다. – Galcoholic

+0

질문에 대해서는 극히 미미한데, 적어도 쿼리 예, 관련된 테이블 정의, 쿼리 계획 등으로는 대답 할 수 없습니다. 또한 서버에 경합이있을 수 있습니다. 서버에 실제로 필요한 메모리 용량은 어느 정도입니까? 어쩌면 천천히 디스크가 있니? 많은 동시 요청과 단 하나의 CPU? 당신이 강조 표시하지 않은 많은 변수들. –

답변

0

이전에 쿼리가 제대로 실행 되었다면 다른 점이 무엇인지 고려해야합니다. 쿼리 플래너와 실제 실행 계획이이를 정확히 파악하는 데 도움이 될 수 있습니다.

당신이 가입한다고 말하면, 가입 한 금액을 고려 했습니까? 새 시스템에 데이터베이스에 더 많은 데이터가있는 경우 조인은 신속하게 엄청나게 비쌀 수 있습니다. 데이터 처리량이 적어 작업 부하가 적기 때문에 필요한 데이터를 줄일 수 있습니다.

쿼리를 실행하기 전에 미리 계산할 수있는 항목이 있습니까? 그렇지 않으면 빠르게 실행되도록 변경하십시오.

데이터를 업데이트하거나 삭제하면 인덱스를 다시 계산해야하는데 시간이 오래 걸릴 수 있습니다.이 경우 인덱스를 비활성화하고 필요한 모든 데이터를 삽입 한 다음 다시 계산해야합니다. 색인)

XML 처리는 언급하지 않지만 for-xml 태그를 표시했습니다. 조인이 XML 데이터에서 수행되는 경우, Xquery를 사용하여 데이터를 얻는 것은 성능을 향상시킬 수도 있습니다.

+0

쿼리에 대한 추가 정보가 있거나 작동하는 방법에 대해 좀 더 구체적인 조언을 드릴 수 있습니다. – Martin

+0

데이터 양이 변경되었다고 예상되는 이유는 무엇입니까? 동일한 데이터베이스 파일이 다른 서버에 연결되어 있음을 이해합니다. 이전에는 동일한 양의 데이터, 동일한 인덱스, 동일한 XML 처리로 빠르기 때문에 간단히 "일반적인 느린 쿼리"가되어서는 안됩니다. – Galcoholic

+0

안녕하세요 - 데이터의 양을 변경하지 마십시오. 손상된 서버에서 새 서버로 mdf 및 ldf 파일을 곧바로 복사하여 다시 첨부하십시오. "for xml explicit"은 SP에서 SQL 출력을 생성합니다. 이것은 (더 이상 사용하지 않는) 조합을 사용하여 TAG/상위 유형의 생성을 사용하여 데이터 집합을 만든 다음에 의해 정렬됩니다. 나는 지금이 방법으로 그것을하지 않을 것이다! XML 데이터에 조인이 없습니다. 이미 사전 계산이 진행 중입니다. 느린 쿼리 중 하나를 가져 와서 같은 SQL 2016 인스턴스에서도 사용할 수 있습니다.* ANTI가 아닌 다른 사용자가 조인하지 않는 것을 찾아야합니다. –