Чи зберігаються статистичні дані SQL Server у базі даних або буферному пулі?


10

Цікаво, що статистичні дані зберігаються в базі даних, але не в пам'яті? Якщо я створюю резервну копію / відновлення бази даних з сервера prod на сервер розвитку, чи збереже вона таку ж статистику, щоб плани виконання не сильно відрізнялися, якщо я це роблю на сервері розробки?

Відповіді:


15

Буферний пул - це кеш бази даних. Ніколи не існує "або", речі, які знаходяться в буферному пулі, також завжди знаходяться в базі даних. І все, що читається з бази даних, повинно бути навіть тимчасово присутнє в буферному пулі.

Що стосується питання: статистика знаходиться в базі даних, тому резервне копіювання / відновлення збереже статистику.

Зауважте, що збереження статистичних даних не є гарантією планування відтворюваності. На генерацію плану впливають інші фактори, наприклад, кількість процесорів та кількість оперативної пам’яті.


ок, має сенс. дякую за роз’яснення!
Радість Уокер


3

Як сказав Ремус , таблична статистика зберігається в базі даних аналогічно іншим об'єктам, як таблиці та індекси. Вони відіграють велику роль у виборі плану виконання, але є й інші фактори.

Незважаючи на це, SQL Server знає інший тип статистики, статистику, яка дає нам інформацію про останні поведінки.

Наприклад, DMVs ys.dm_db_index_usage_statsі sys.dm_db_index_operational_statsповернення статистики про те, як використовується індекс.

Ці статистичні дані зберігаються лише в пам'яті. Загубтесь при перезапуску сервера і не подорожуйте за допомогою резервної копії.

Однак оптимізатор не використовує їх і для створення плану.


Так, саме тому у мене виникло питання / плутанина в першу чергу. Я думав, що статистика схожа на DMV. Вони можуть бути відсутній при перезапуску сервера або відновлення db на інший сервер. Дякуємо, що висловили свою думку.
Радість Уокер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.