실행 속도가 느린 쿼리 분석 검사 목록

쿼리나 업데이트를 실행하는 데 예상된 시간보다 오래 걸리는 경우 다양한 원인이 있을 수 있습니다. 쿼리의 실행 속도가 느린 경우 SQL Server를 실행 중인 네트워크나 컴퓨터에 성능 문제가 있을 수 있습니다. 또한 물리적 데이터베이스 디자인의 문제로 인해 쿼리의 실행 속도가 느릴 수도 있습니다.

쿼리나 업데이트의 실행 속도가 느린 경우 가장 일반적인 몇 가지 원인은 다음과 같습니다.

  • 저속 네트워크 통신

  • 서버 컴퓨터의 메모리가 부족하거나 SQL Server에서 사용 가능한 메모리 부족

  • 유용한 통계 부족

  • 유용한 인덱스 부족

  • 유용한 인덱싱된 뷰 부족

  • 유용한 데이터 스트라이프 부족

  • 유용한 분할 부족

쿼리 또는 업데이트가 예상보다 오래 걸리는 경우 이전 섹션에 나열되어 있는 실행 속도가 느린 쿼리의 원인을 알아내는 다음 사항을 확인합니다.

팁

시간을 절약하려면 기술 지원 공급자에게 문의하기 전에 다음 검사 목록을 확인하십시오.

  1. 성능 문제가 쿼리 외의 다른 구성 요소에 관련된 것입니까? 예를 들면 저속 네트워크 성능에 관한 문제입니까? 성능 저하에 직접 또는 간접적으로 영향을 주는 다른 구성 요소가 또 있습니까?

    Windows 시스템 모니터를 사용하여 SQL Server와 관련된 구성 요소 및 SQL Server와 관련 없는 구성 요소의 성능을 모니터링할 수 있습니다. 자세한 내용은 리소스 사용 모니터링(시스템 모니터)을 참조하십시오.

  2. 성능 문제가 쿼리에 관련된 것이라면 어떤 쿼리 또는 쿼리 집합에 관한 것입니까?

    SQL Server 프로파일러를 사용하면 실행 속도가 느린 쿼리를 확인할 수 있습니다. 자세한 내용은 SQL Server 프로파일러 사용을 참조하십시오. sys.dm_exec_query_statssys.dm_exec_requests 동적 관리 뷰를 사용하여 전체적으로 많은 리소스를 사용하는 비슷한 쿼리를 찾을 수 있습니다. 자세한 내용은 쿼리 및 쿼리 계획 해시를 사용하여 비슷한 쿼리 검색 및 튜닝을 참조하십시오.

  3. 실행 속도가 느린 쿼리의 성능을 분석하는 방법

    실행 속도가 느린 쿼리를 확인한 후 쿼리 최적화 프로그램이 생성하는 쿼리 실행 계획의 텍스트, 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 쿼리 최적화 프로그램에서 쿼리를 실행하는 방법 및 사용되는 인덱스를 결정할 수 있습니다. 이러한 정보를 사용하면 쿼리를 다시 작성하거나, 테이블의 인덱스를 변경하거나, 데이터베이스 디자인을 수정함으로써 성능 향상이 이루어질 수 있는지 확인할 수 있습니다. 자세한 내용은 쿼리 분석을 참조하십시오.

  4. 쿼리가 유용한 통계로 최적화되었습니까?

    쿼리 최적화 프로그램에서는 통계를 사용하여 쿼리 성능을 향상시키는 쿼리 계획을 만듭니다. 대부분의 쿼리에서 쿼리 최적화 프로그램은 고품질의 쿼리 계획에 필요한 통계를 이미 생성하므로 경우에 따라서 최상의 결과를 위해 추가 통계를 만들거나 쿼리 설계를 수정해야 합니다.

    자세한 내용은 통계를 사용하여 쿼리 성능 향상을 참조하십시오. 이 항목에서는 쿼리 성능을 위해 통계의 효율성을 향상시킬 수 있는 지침을 제공합니다. 지침 내용은 다음과 같습니다.

    • 데이터베이스 차원의 통계 옵션 사용. 예를 들어 자동 통계 작성 옵션 AUTO_CREATE_STATISTICS 및 자동 통계 업데이트 옵션 AUTO_UPDATE_STATISTICS, 데이터베이스 차원의 옵션이 ON인지 확인해야 합니다. 이 옵션을 OFF로 설정하면 최적이 아닌 쿼리 계획을 사용하여 쿼리 성능이 저하될 수 있습니다.

    • 통계 작성 시기 결정. 경우에 따라 CREATE STATISTICS(Transact-SQL) 문을 통해 추가 통계를 작성하여 쿼리 계획을 향상시킬 수 있습니다. 인덱스 또는 단일 열에 대해 통계를 작성할 때 이러한 추가 통계를 통해 쿼리 최적화 프로그램에 설명되지 않은 통계 상관 관계를 캡처할 수 있습니다.

    • 통계 업데이트 시기 결정. 경우에 따라 AUTO_UPDATE_STATISTICS를 ON으로 설정할 때보다 더 자주 통계를 업데이트하여 쿼리 계획을 향상시키고 쿼리 성능을 높일 수 있습니다. UPDATE STATISTICS 문 또는 저장 프로시저 sp_updatestats를 사용하여 통계를 업데이트할 수 있습니다.

    • 효율적인 통계 사용을 위한 쿼리 설계. 쿼리 조건자에서 지역 변수, 복잡한 식 등의 일부 쿼리 구현은 만족스럽지 못한 쿼리 계획을 만들 수 있습니다. 이를 방지하려면 효율적인 통계 사용을 위한 쿼리 설계 지침을 따르는 것이 좋습니다.

  5. 적절한 인덱스를 사용할 수 있습니까? 한 개 이상의 인덱스를 추가하면 쿼리 성능이 향상됩니까? 자세한 내용은 일반 인덱스 디자인 지침, 누락된 인덱스 찾기데이터베이스 엔진 튜닝 관리자 개요을 참조하십시오. 데이터베이스 엔진튜닝 관리자가 필요한 통계를 생성하도록 권장할 수도 있습니다.

  6. 데이터 또는 인덱스 관련 문제가 있습니까? 디스크 스트라이프 사용을 고려하십시오. 데이터가 여러 디스크 드라이브에 분산된 RAID(독립적인 디스크의 중복 배열) 수준 0을 사용하여 디스크 스트라이프를 구현할 수 있습니다. 자세한 내용은 파일 및 파일 그룹 사용RAID를 참조하십시오.

  7. 쿼리 최적화 프로그램에 복잡한 쿼리 최적화를 위한 최상의 기회가 주어집니까? 자세한 내용은 쿼리 튜닝 권장 사항을 참조하십시오.

  8. 대용량의 데이터가 있는 경우 데이터를 분할해야 합니까? 데이터 관리 효율성이 분할의 주요한 이점이지만 데이터의 테이블과 인덱스가 유사하게 분할되면 분할로 인해 쿼리 성능도 향상될 수 있습니다. 자세한 내용은 분할 이해물리적 데이터베이스 디자인 튜닝을 참조하십시오.