SQL Server 통계가 데이터베이스 또는 버퍼 풀에 저장됩니까?


10

통계가 데이터베이스에는 있지만 메모리에는 없는지 궁금합니다. prod 서버에서 개발 서버로 데이터베이스를 백업 / 복원하는 경우 개발 서버에서 데이터베이스를 수행 할 때 실행 계획이 크게 다르지 않도록 동일한 통계를 유지합니까?

답변:


15

버퍼 풀은 데이터베이스의 캐시입니다. 버퍼 풀에있는 것은 항상 '또는'이 없으며 항상 데이터베이스에 있습니다. 그리고 데이터베이스에서 읽은 것은 버퍼 풀에 일시적으로 존재해야합니다.

질문 : 통계는 데이터베이스에 있으므로 백업 / 복원은 통계를 보존합니다.

통계를 보존한다고해서 재현성을 계획 할 수있는 것은 아닙니다. CPU 수 및 RAM 크기와 같은 다른 요소가 계획 생성에 영향을줍니다.


알겠습니다. 설명 주셔서 감사합니다!
Joy Walker


3

으로 레무스는 말했다 , 테이블 통계는 테이블과 인덱스와 같은 다른 객체와 유사한 데이터베이스에 저장됩니다. 그들은 실행 계획을 선택하는 데 큰 역할을하지만 다른 요소가 있습니다.

즉, SQL Server는 다른 유형의 통계, 즉 최근 동작에 대한 정보를 제공하는 통계를 알고 있습니다.

예를 들어 DMV ys.dm_db_index_usage_statssys.dm_db_index_operational_stats인덱스 사용 방법에 대한 통계를 반환합니다.

이러한 통계는 메모리에만 저장됩니다. 서버를 다시 시작할 때 길을 잃고 백업으로 이동하지 않습니다.

그러나 옵티마이 저는이를 사용하여 계획을 생성하지 않습니다.


예, 이것이 처음에 질문 / 혼란을 일으킨 이유입니다. 통계가 DMV와 비슷하다고 생각했습니다. 서버가 다시 시작되거나 다른 서버로 db가 복원되면 사라질 수 있습니다. 지적 해 주셔서 감사합니다.
Joy Walker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.