¿Se almacenan las estadísticas de SQL Server en la base de datos o grupo de búferes?

10

Me pregunto si las estadísticas se guardan en la base de datos pero no en la memoria. Si hago una copia de seguridad / restauro la base de datos de un servidor de producción a un servidor de desarrollo, ¿mantendría las mismas estadísticas para que los planes de ejecución no sean muy diferentes si lo hago en el servidor de desarrollo?

Joy Walker
fuente

Respuestas:

15

El grupo de búferes es un caché de la base de datos. Nunca hay un 'o', las cosas que están en el grupo de búferes también están siempre en la base de datos. Y todo lo que se lea de la base de datos debe estar, incluso temporalmente, presente en el grupo de búferes.

En cuanto a la pregunta: las estadísticas están en la base de datos, por lo que una copia de seguridad / restauración conservará las estadísticas.

Sin embargo, tenga en cuenta que preservar las estadísticas no es una garantía para planificar la reproducibilidad. Otros factores influyen en la generación del plan, como la cantidad de CPU y la cantidad de RAM.

Remus Rusanu
fuente
Ok, tiene sentido. ¡gracias por la aclaración!
Joy Walker
3

Como dijo Remus , las estadísticas de la tabla se almacenan en la base de datos de manera similar a otros objetos como tablas e índices. Desempeñan un papel importante en la selección del plan de ejecución, pero hay otros factores.

Dicho esto, SQL Server conoce otro tipo de estadísticas, estadísticas que nos brindan información sobre el comportamiento reciente.

Por ejemplo, los DMV ys.dm_db_index_usage_statsy las sys.dm_db_index_operational_statsestadísticas de retorno sobre cómo se usa el índice.

Esas estadísticas se almacenan solo en la memoria. Se pierden al reiniciar el servidor y no viajan con la copia de seguridad.

Sin embargo, el optimizador tampoco los utiliza para generar un plan.

Sebastian Meine
fuente
Sí, es por eso que tuve la pregunta / confusión en primer lugar. Estaba pensando que las estadísticas son similares a las del DMV. Podrían desaparecer cuando el servidor se reinicie o db restaurado a otro servidor. Gracias por hacer el punto.
Joy Walker