STATISTICS_NORECOMPUTE를 사용하는 것이 좋습니다


9

최근 몇 가지 흥미로운 인덱스 문제가있는 데이터베이스 집합을 유지 관리하는 데 참여했습니다. 나를 가장 괴롭히는 것 중 하나는 개발, 테스트, 모델 및 생산 기계의 지수 차이입니다. 차이점 때문에 튜닝 쿼리를 동기화하기가 다소 어려워 지므로 내 첫 프로젝트 중 하나입니다.

테스트 환경과 모델 환경을 비교 한 결과 모델 환경의 대부분의 인덱스 가 테스트 환경의 인덱스와 달리 STATISTICS_NORECOMPUTE설정되어 있음을 알았습니다 ON. 모든 환경에는 모든 데이터베이스의 통계를 업데이트하는 야간 작업이 있습니다.

전에는 다루지 않았 STATISTICS_NORECOMPUTE으므로 여기에 내 질문이 있습니다. 이 설정을 처리 할 때 모범 사례가 있습니까? 하루가 끝날 때 통계 업데이트를 수행하는 경우 STATISTICS_NORECOMPUTE모든 인덱스의 모든 환경을 설정하는 것이 가장 좋습니까? 아니면하지 않는 좋은 이유가 있습니까?

편집 : 나는 여기 에 주제에 대한 Kimberly Tripp의 블로그 중 하나 STATISTICS_NORECOMPUTE를 최대한으로 사용해야한다는 것을 알았습니다 . 그러나 나는 여전히 그것을 세계적으로 끄는 것에 대해 걱정하고 있습니다. 누구든지 이것을 시도하고 그들이 경험 한 것은 무엇입니까?


당신은 그것을 믿고이 응용 프로그램을 볼 수 있어야합니다. 일부 테이블에는 수십 개의 인덱스가 있고 일부 테이블에는없는 인덱스가 있고 일부 테이블에는 여러 개의 중복이 있습니다. 진짜 엉망입니다. 따라야 할 일반적인 지침이 있습니까? 내가 읽을 수있는 곳이 있습니까?
케네스 피셔

1
한 가지 좋은 사례는 변경 후 FULLSCAN으로 INDEX REBUILD를 수행하는 스크립트를 사용하여 DBA에 의해서만 변경되는 읽기 전용 조회 테이블에 STATISTICS_NORECOMPUTE = ON 및 FILLFACTOR = 100을 사용하는 것입니다. 그러면 최적의 통계와 다른 변경 사항없이 테이블이 최적의 형태를 유지하므로 통계를 다시 계산하거나 향후 변경시 페이지 분할을 줄이기 위해 공간을 남겨 두어야 할 이유도 없습니다.
위조 방지 암호

답변:


4

실제로는 테이블별로 또는 인덱스별로보고 싶은 상황이므로 실제로 어떤 작업을 수행하기 전에 프로덕션 환경에 있는지 확인해야합니다. 의심스러운 경우, 여러 가지 미친 설정을 사용하더라도 다른 환경에서도 프로덕션 환경에있는 것을 사용하십시오. 테스트 나 개발 환경이 다른 경우 프로덕션이 어떻게 작동 할 것인지에 대한 좋은 느낌을 얻을 수 없습니다.

어쨌든 자동 업데이트 통계를 켜두는 일반적인 권장 사항 STATISTICS_NORECOMPUTE = OFF은 안전상의 이유입니다.이 기능이 꺼져 있고 수동으로 통계를 업데이트하는 것이 없으면 결과는 절대로 변경되지 않는 끔찍한 실행 계획이 될 수 있기 때문입니다 처음 만들어진 후 (나중에 다른 이유로 무효화되지 않음).

당신은 자동 업데이트 통계가 해제되는 것을 특징으로 대부분의 인덱스 (내가 원래 오해 생각과 모든 , 아니 대부분 ). 자동 업데이트 통계가 여전히 활성화 된 인덱스의 경우 해당 테이블의 활동이이 설정에 적합합니까? 나는 이것이 더 높은 활동 표라고 기대합니다. 이를 파악하기 위해 많은 작업이 수행되었을 수 있으며 이러한 설정을 유지하는 것이 좋습니다. 최소한 어떤 통계가 있는지 기록해 두십시오. 그 정보는 길을 따라 가기 쉬울 수 있기 때문입니다.

더 자세히 생각해 보면 현재 전략이 의미가 있다고 말할 것입니다. 자동 업데이트 통계를 모든 상태로 유지하는 것보다 낫습니까? SQL 에이전트 작업과 관련된 관리 용이성에 대한 가치가 있다는 점에서 누군가 그렇게 생각한 것 같습니다.

아이디어를 쿼리를 차단하지 않고 (예 : 이와 같이 ) 새로운 통계를 사용할 수있게 하려면 모든 것에 대해 자동 업데이트를 다시 설정 한 다음 다시 설정하는 것도 고려할 수 AUTO_UPDATE_STATISTICS_ASYNC있습니다. 그런 다음 통계를 WITH FULLSCAN정기적으로 업데이트하기를 원하므로 작업 스케줄을 매일 대신 일주일에 한 번 실행하도록 변경하십시오 .

그러나 색인 자체가 환경마다 다르고 통계 재 구축이 너무 고통스럽지 않으면 더 큰 생선을 볶을 수 있으므로 그대로 두십시오. 현재 무엇이 의미가 있습니다. 여러 환경에서 일관된 작업을 수행하면됩니다. 더 많은 작업을 수행하면서 내가 제안한 간단한 설정보다 약간 더 나을 것입니다. 그러나 생산중인 제품을 찾고,이를 사용하는 경향이 있으며,보다 중요한 것들로 넘어가십시오. 성능을보다 세밀하게 조정해야하는 시점에이를 다시 확인하십시오. 세계 최고의 통계는 중요 지수가 누락 된 쿼리를 저장하지 않습니다.


죄송합니다 ...이 의견을 제출하지 않기로 결정했습니다.
swasheck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.