실행 속도가 느린 쿼리 분석 검사 목록
쿼리나 업데이트를 실행하는 데 예상된 시간보다 오래 걸리는 경우 다양한 원인이 있을 수 있습니다. 쿼리의 실행 속도가 느린 경우 SQL Server를 실행 중인 네트워크나 컴퓨터에 성능 문제가 있을 수 있습니다. 또한 물리적 데이터베이스 디자인의 문제로 인해 쿼리의 실행 속도가 느릴 수도 있습니다.
쿼리나 업데이트의 실행 속도가 느린 경우 가장 일반적인 몇 가지 원인은 다음과 같습니다.
- 저속 네트워크 통신
- 서버 컴퓨터의 메모리가 부족하거나 SQL Server에서 사용 가능한 메모리 부족
- 인덱싱된 열에 유용한 통계 부족
- 인덱싱된 열의 통계가 최신 통계가 아님
- 유용한 인덱스 부족
- 유용한 인덱싱된 뷰 부족
- 유용한 데이터 스트라이프 부족
- 유용한 분할 부족
실행 속도가 느린 쿼리 문제 해결 검사 목록
쿼리 또는 업데이트가 예상보다 오래 걸리는 경우 이전 섹션에 나열되어 있는 실행 속도가 느린 쿼리의 원인을 알아내는 다음 사항을 확인합니다.
팁: |
---|
시간을 절약하려면 기술 지원 공급자에게 문의하기 전에 다음 검사 목록을 확인하십시오. |
- 성능 문제가 쿼리 외의 다른 구성 요소에 관련된 것입니까? 예를 들면 저속 네트워크 성능에 관한 문제입니까? 성능 저하에 직접 또는 간접적으로 영향을 주는 다른 구성 요소가 또 있습니까?
Windows 시스템 모니터를 사용하여 SQL Server 와 관련된 구성 요소 및 SQL Server와 관련 없는 구성 요소의 성능을 모니터링할 수 있습니다. 자세한 내용은 리소스 사용 모니터링(시스템 모니터)을 참조하십시오. - 성능 문제가 쿼리에 관련된 것이라면 어떤 쿼리 또는 쿼리 집합에 관한 것입니까?
SQL Server 프로파일러를 처음 사용하면 실행 속도가 느린 쿼리를 확인할 수 있습니다. 자세한 내용은 SQL Server 프로파일러 사용을 참조하십시오.
실행 속도가 느린 쿼리를 확인한 후 쿼리 최적화 프로그램이 생성하는 쿼리 실행 계획의 텍스트, XML 또는 그래픽 표현인 실행 계획(Showplan)을 작성하여 쿼리 성능을 자세히 분석할 수 있습니다. Transact-SQL SET 옵션, SQL Server Management Studio 또는 SQL Server 프로파일러를 사용하여 실행 계획을 작성할 수 있습니다.
Transact-SQL SET 옵션을 사용하여 텍스트 및 XML 실행 계획을 표시하는 방법은 실행 계획 SET 옵션을 사용하여 실행 계획 표시(Transact-SQL)를 참조하십시오.
SQL Server Management Studio를 사용하여 그래픽 실행 계획을 표시하는 방법은 그래픽 실행 계획 표시(SQL Server Management Studio)를 참조하십시오.
SQL Server 프로파일러를 사용하여 텍스트 및 XML 실행 계획을 표시하는 방법은 SQL Server 프로파일러 이벤트 클래스를 사용하여 실행 계획 표시를 참조하십시오.
이러한 도구를 사용하여 수집한 정보를 통해 SQL Server 쿼리 최적화 프로그램에서 쿼리를 실행하는 방법 및 사용되는 인덱스를 결정할 수 있습니다. 이러한 정보를 사용하면 쿼리를 다시 작성하거나, 테이블의 인덱스를 변경하거나, 데이터베이스 디자인을 수정함으로써 성능 향상이 이루어질 수 있는지 확인할 수 있습니다. 자세한 내용은 쿼리 분석을 참조하십시오. - 쿼리가 유용한 통계로 최적화되었습니까?
열에서 값의 분포에 관련된 통계가 SQL Server에 의해 인덱싱된 열에 자동으로 만들어집니다. 또한 SQL Server Management Studio 또는 CREATE STATISTICS 문을 사용하여 인덱싱되지 않은 열에 수동으로 만들어지거나 AUTO_CREATE_STATISTICS 데이터베이스 옵션이 TRUE로 설정되어 있는 경우 자동으로 만들어집니다. 쿼리 프로세서에서 쿼리 평가를 위한 최적의 전략을 결정할 때 이 통계를 사용할 수 있습니다. 조인 연산에 수반되는 인덱싱되지 않은 열에 추가 통계를 유지 관리하여 쿼리 성능을 향상시킬 수 있습니다. 자세한 내용은 인덱스 통계를 참조하십시오.
SQL Server 프로파일러 또는 SQL Server Management Studio에서 그래픽 실행 계획을 통해 쿼리를 모니터링하여 쿼리 통계가 충분한지 확인합니다. 자세한 내용은 Errors and Warnings 이벤트 범주(데이터베이스 엔진)를 참조하십시오. - 쿼리 통계가 최신 통계입니까? 자동으로 업데이트되는 통계입니까?
SQL Server는 쿼리 통계 자동 업데이트를 사용하는 경우 인덱싱된 열에 쿼리 통계를 자동으로 만들고 업데이트합니다. 또한 인덱싱되지 않은 열에도 SQL Server Management Studio 또는 UPDATE STATISTICS 문을 사용하여 수동으로 또는 AUTO_UPDATE_STATISTICS 데이터베이스 옵션이 TRUE로 설정된 경우에는 자동으로 통계를 업데이트할 수 있습니다. 최신 통계는 날짜나 시간 데이터로만 결정되지 않습니다. UPDATE 작업이 이루어지지 않았더라도 쿼리 통계는 최신이 됩니다.
통계가 자동으로 업데이트되도록 설정되지 않았으면 자동 업데이트를 설정합니다. 자세한 내용은 인덱스 통계를 참조하십시오. - 적절한 인덱스를 사용할 수 있습니까? 한 개 이상의 인덱스를 추가하면 쿼리 성능이 향상됩니까? 자세한 내용은 일반 인덱스 디자인 지침, 누락된 인덱스 찾기 및 데이터베이스 엔진 튜닝 관리자 참조를 참조하십시오. 데이터베이스 엔진 튜닝 관리자가 필요한 통계를 생성하도록 권장할 수도 있습니다.
- 데이터 또는 인덱스 관련 문제가 있습니까? 디스크 스트라이프 사용을 고려하십시오. 데이터가 여러 디스크 드라이브에 분산된 RAID(독립적인 디스크의 중복 배열) 수준 0을 사용하여 디스크 스트라이프를 구현할 수 있습니다. 자세한 내용은 파일 및 파일 그룹 사용 및 RAID를 참조하십시오.
- 쿼리 최적화 프로그램에 복잡한 쿼리 최적화를 위한 최상의 기회가 주어집니까? 자세한 내용은 쿼리 튜닝 권장 사항을 참조하십시오.
- 대용량의 데이터가 있는 경우 데이터를 분할해야 합니까? 데이터 관리 효율성이 분할의 주요한 이점이지만 데이터의 테이블과 인덱스가 유사하게 분할되면 분할로 인해 쿼리 성능도 향상될 수 있습니다. 자세한 내용은 분할 이해 및 물리적 데이터베이스 디자인 튜닝을 참조하십시오.
참고 항목
개념
실행 계획 SET 옵션을 사용하여 실행 계획 표시(Transact-SQL)
SQL Server 프로파일러 이벤트 클래스를 사용하여 실행 계획 표시
Showplan 보안
실행 계획을 만드는 Transact-SQL 문