SQL Server полезные команды. DBCC CLONEDATABASE

SQL Server полезные команды. DBCC CLONEDATABASE

Автор: dbasimple

В MS SQL Server2014 после выхода SP2 появилась новая команда DBCC, команда

DBCC CLONEDATABASE

Данная команда создает новую базу данных с содержанием схему всех объектов и статистики исходной базы данных.

Более подробно это описано в kb 3177838.

Там же описано более подробное назначение данной команды:

«Команда поддержки Майкрософт может вас попросить создать клон вашей базы данных данной команды для исследования проблемы производительности связанная с оптимизатором запросов.»

И там же примечание: что созданную данной командой базу данных не использовать как продукционную базу данных, а использовать для диагностических целей.

Что делает данная команда по шагам:

— создает новую базу данных согласно базе данных model(размер файлов и их приращение)

— создает внутренний моментальный снимок исходной базы данных

— копируется системные и пользовательские объекты из исходной базы данных в новую базу данных

— Копирует данные статистики из исходной базы данных без самих данных в базе (в документации указана статистика индексов, но на самом деле всю статистику в базе).

Для последнего пункта скорее всего и создавалась данная команда, скопировать статистику в базе без самих данных в базе данных и уже по этой статистике анализировать поведение проблемных запросов.

Вообще, я думаю, причиной создания данной команды, наверно, стало много обращений в поддержку Майкрософт, почему запрос выполнялся хорошо, а потом плохо, а для объяснения и проверки поведения оптимизатора запросов не хватало информации по статистике, поэтому поддержка Майкрософт попросила у разработчиков данную команду, в итоге теперь для анализа  нужно отдавать только клон бд без данных, что намного меньше в объеме.

Синтаксис команды:

Он довольно простой

DBCC CLONEDATABASE (source_database_name, target_database_name)

Кто сможет выполнить данную команду — пользователи сервера с правами sysadmins.

Пример выполнения:

Есть база данных db1, в ней таблица с данными, на таблице созданы 2 индекса, а также дополнительная статистика без индекса.

После выполнения команды

DBCC CLONEDATABASE(db1,db1_clone)

Создается база данных «db1_clone»  в статусе Read-Only.

Размещение файлов, там же где и исходная

DB_Name           physical_name

db1                     C:\data\db1.mdf

db1                      C:\data\db1_log.ldf

db1_clone          C:\data\db1_1992956780.mdf

db1_clone          C:\data\db1_log_1697443590.ldf

к файлам дописывается случайное числовое значение.

А вот физически параметры файлов бд взяты от model

А теперь к внутренностям клонированной базы данных:

В ней есть все объекты исходной базы данных:

Но без данных:

Но зато осталась дата обновления статистики и ее распределение в таблице:

Что и нужно для оптимизатора запросов при построение плана запроса.

Кстати такой командой можно выполнять несколько раз в день, а потом анализировать, как меняется распределение данных в течение рабочего дня и как после этого меняется план запроса на вашей промышленной системе.

Еще раз, данная команда появилась в MS SQL2014 SP2, в Microsoft SQLServer 2016 (RTM) — 13.0.1601.5 (X64)

данной команды пока нет, при выполнении будет ошибка

Msg 2526, Level 16, State 3, Line 1

Incorrect DBCC statement. Check the documentation for the correct DBCC syntax and options.

Так же замечание, команда может не всегда выполняться, есть ошибки, как описаны здесь, либо как у меня на одном сервере просто ошибка, хотя точно такую же базу данных я использовал выше.

Database cloning for ‘DB1’ has started with target as ‘DB1_clone’.

Msg 213, Level 16, State 1, Line 1

Column name or number of supplied values does not match table definition.

А так неплохое средство для диагностики поведения запросов на промышленной среде со временем и от зависимости данных в таблицах. В MS SQL 2016 есть QUERY STORE, которое так же помогает отслеживает поведение запросов в течение рабочего дня, но это уже другая история…

Запись опубликована в рубрике Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: