업데이트 통계가 실제로 성능을 저하합니까?

업데이트 통계가 실제로 성능을 저하합니까?

프로덕션 데이터베이스에 야간 sp_updatestats가 있는데 업데이트 후 성능 문제가 발생하는 특정 저장 프로세스를 제외하고는 제대로 작동하는 것 같습니다.

개발팀은 현재 proc(몇 가지 새로운 인덱스 및 내가 권장한 쿼리 재구성)을 수정하기 위해 노력하고 있지만 현재 유일한 해결 방법은 다음을 수행하는 것입니다.

UPDATE STATISTICS [SuperGiantTable]
WITH FULLSCAN

그렇다면 문제는 sp_ updatestats가 "with fullscan" 옵션을 수행하도록 강제할 수 있느냐는 것입니다. 나는원하다에게? 그렇지 않은 경우에는 UPDATE STATISTICS 명령 위에 이 내용을 추가하여 sp_updatestats 바로 다음에 실행할 것입니다.

SQL 2000, 그나저나.

답변1

KPWINC가 말했듯이 "정말 상황에 따라 다릅니다".

귀하의 질문에 대한 답변에 영향을 미치며 일반적인 답변이 적절하지 않을 수 있는 항목이 몇 가지 더 있습니다.

Microsoft MSDN에는 sp_updatestats에 대한 항목이 있습니다(http://msdn.microsoft.com/en-us/library/aa260337(SQL.80).aspx) 및 "통계 업데이트"(http://msdn.microsoft.com/en-us/library/aa260645(SQL.80).aspx)

마지막 질문에 먼저 답하려면:

SQLServerPedia 항목을 다시 읽어야 합니다. 구체적으로:

인덱스 재구축은 인덱스에 대한 통계를 자동으로 업데이트합니다(100% 샘플 크기는 일반적으로 sp_updatestats를 사용할 때 얻는 것보다 더 좋습니다).인덱스 재구축이 완료된 후 sp_updatestats를 사용하여 주의가 필요한 다른 통계를 업데이트할 수 있습니다. (2005+).

UPDATE STATISTICS(2000) 문서를 보면 샘플링에 대해 다음과 같이 나와 있습니다.

참고 기본 동작은 대상 테이블이나 인덱싱된 뷰에서 샘플 검색을 수행하는 것입니다.SQL Server는 필요한 샘플 크기를 자동으로 계산합니다..

Kimberly Tripp은 통계, 색인 및 데이터베이스 유지 관리 계획에 대한 몇 가지 블로그 항목을 정리했습니다(http://www.sqlskills.com/BLOGS/KIMBERLY/category/Statistics.aspx). 정보는 귀하가 직접 사용할 수도 있고 그렇지 않을 수도 있지만, 각 블로그 항목의 지침은 있어야 하며 참조 사이트가 도움이 될 것입니다.

답변2

정말 상황에 따라 다릅니다...

데이터베이스는 몇 개입니까?

데이터베이스의 크기는 얼마나 됩니까?

활동량은 얼마나 되나요?

sp_updatestats(기본적으로)는 기본 샘플링 속도로 통계를 업데이트합니다. resample 옵션을 사용해 볼 수 있지만 이는 마지막으로 통계를 업데이트한 이후 자동 업데이트가 발생하지 않은 경우에만 작동합니다(자동 업데이트도 기본 샘플링 속도를 사용함).

인덱스를 재구축하면 전체 스캔을 통해 통계가 업데이트되며 대부분의 사람들은 인덱스 재구축 후 좋은 성능을 경험합니다.

사람들이 자동 통계 기능을 끄는 경우는 매우 드뭅니다. ON으로 두는 것이 좋습니다.

적절한 간격(각 테이블의 데이터 수정 패턴에 따라 다름)으로 실행되고 전체 스캔 또는 기타 높은 샘플링 속도를 사용하여 수동 통계 업데이트를 수행하는 작업을 만듭니다.

일반적으로 나는 다음과 같이 갈 것입니다 :

데이터베이스가 큰 경우 - 트랜잭션 로그는 매시간 백업됩니다.

-- 매일 차등 백업합니다. -- 매일 조각 모음. -- 일일 업데이트 통계.

-- 일주일에 한 번씩 색인을 다시 생성합니다. -- 일주일에 한 번 전체 백업을 수행합니다.

많은 것은 데이터베이스와 트랜잭션에 따라 달라집니다.

답변3

한 가지 더 염두에 두어야 할 점은 자동으로 계산된 샘플 속도로 인해 생성된 히스토그램 및 밀도 벡터가 sproc이 작동할 때 발생할 수 있는 데이터 왜곡을 제대로 설명하지 못할 수 있다는 것입니다.

샘플링된 통계 업데이트 후 sproc과 전체 스캔 통계 업데이트 후 쿼리 계획의 차이점을 알고 계십니까?

한 가지 더 - 인덱스를 다시 작성하고 다시 작성의 부작용으로 업데이트된 동일한 통계를 업데이트하는 유지 관리 계획에 주의하십시오.더 나쁜그러면 재구축 업데이트 통계만 그대로 놔둔다면 통계가 됩니다.

감사해요

관련 정보