XML EXPLICIT 쿼리에 대해 SQL 2005 서버를 실행해도 성능상의 문제없이 매우 만족 스럽습니다. 컴퓨터 (Windows 2003 서버)는 불행히도 사망하여 Windows 2012 상자의 긴급 조항을 수행해야했습니다. 데이터베이스 파일이 2008r2 및 "작업"에 다시 첨부되었습니다. 그러나 쿼리는 끔찍하게 느립니다. 이전에 .x 시간대에 있었을 때 쿼리 당 5 초. 이것은 그들이 사용할 수없는 웹 사이트를 만듭니다. 모든 인덱스를 다시 작성했지만 모든 컴퓨터에서 DBCC FREEPROCCACHE를 실행했지만 눈에 띄는 효과는 없었습니다. 내가 뭘 더 볼 수 있니? 일부 쿼리는 비 ANSI * = 조인을 사용하기 때문에 상자의 2016 SQL 인스턴스에서 실행할 수 없습니다 (이전 버전이라고!).서버 전송 후 SQL 성능이 좋지 않음
답변
이전에 쿼리가 제대로 실행 되었다면 다른 점이 무엇인지 고려해야합니다. 쿼리 플래너와 실제 실행 계획이이를 정확히 파악하는 데 도움이 될 수 있습니다.
당신이 가입한다고 말하면, 가입 한 금액을 고려 했습니까? 새 시스템에 데이터베이스에 더 많은 데이터가있는 경우 조인은 신속하게 엄청나게 비쌀 수 있습니다. 데이터 처리량이 적어 작업 부하가 적기 때문에 필요한 데이터를 줄일 수 있습니다.
쿼리를 실행하기 전에 미리 계산할 수있는 항목이 있습니까? 그렇지 않으면 빠르게 실행되도록 변경하십시오.
데이터를 업데이트하거나 삭제하면 인덱스를 다시 계산해야하는데 시간이 오래 걸릴 수 있습니다.이 경우 인덱스를 비활성화하고 필요한 모든 데이터를 삽입 한 다음 다시 계산해야합니다. 색인)
XML 처리는 언급하지 않지만 for-xml 태그를 표시했습니다. 조인이 XML 데이터에서 수행되는 경우, Xquery를 사용하여 데이터를 얻는 것은 성능을 향상시킬 수도 있습니다.
쿼리에 대한 추가 정보가 있거나 작동하는 방법에 대해 좀 더 구체적인 조언을 드릴 수 있습니다. – Martin
데이터 양이 변경되었다고 예상되는 이유는 무엇입니까? 동일한 데이터베이스 파일이 다른 서버에 연결되어 있음을 이해합니다. 이전에는 동일한 양의 데이터, 동일한 인덱스, 동일한 XML 처리로 빠르기 때문에 간단히 "일반적인 느린 쿼리"가되어서는 안됩니다. – Galcoholic
안녕하세요 - 데이터의 양을 변경하지 마십시오. 손상된 서버에서 새 서버로 mdf 및 ldf 파일을 곧바로 복사하여 다시 첨부하십시오. "for xml explicit"은 SP에서 SQL 출력을 생성합니다. 이것은 (더 이상 사용하지 않는) 조합을 사용하여 TAG/상위 유형의 생성을 사용하여 데이터 집합을 만든 다음에 의해 정렬됩니다. 나는 지금이 방법으로 그것을하지 않을 것이다! XML 데이터에 조인이 없습니다. 이미 사전 계산이 진행 중입니다. 느린 쿼리 중 하나를 가져 와서 같은 SQL 2016 인스턴스에서도 사용할 수 있습니다.* ANTI가 아닌 다른 사용자가 조인하지 않는 것을 찾아야합니다. –
쿼리 계획을 보았습니까? –
모든 DB 통계, 결과 캐시 및 기타 데이터가 손실되어 다시 작성해야하는 등 여러 가지 이유가있을 수 있습니다. 서버가 사용 중일 때 느리게 개선되는 것을 보시겠습니까? 아니면 지금 다운 되었습니까? 그것을 사용하여 시작하고, 잃어버린 데이터가 다시 빌드되면서 점점 빨라지는지 볼 가치가 있습니다. – Galcoholic
질문에 대해서는 극히 미미한데, 적어도 쿼리 예, 관련된 테이블 정의, 쿼리 계획 등으로는 대답 할 수 없습니다. 또한 서버에 경합이있을 수 있습니다. 서버에 실제로 필요한 메모리 용량은 어느 정도입니까? 어쩌면 천천히 디스크가 있니? 많은 동시 요청과 단 하나의 CPU? 당신이 강조 표시하지 않은 많은 변수들. –