Моментальные снимки базы данных (SQL Server)
Моментальный снимок базы данных является статичным, доступным только для чтения представлением базы данных SQL Server ( базы данных-источника). Моментальный снимок базы данных согласуется на уровне транзакций с базой данных-источником в момент создания моментального снимка. Моментальный снимок базы данных всегда находится на том же экземпляре сервера, что и база данных-источник. Моментальный снимок базы данных предоставляет представление данных только для чтения в состоянии на момент создания моментального снимка. Размер файла моментального снимка увеличивается по мере внесения изменений в базу данных-источник. Подробные сведения см. в разделе Общие сведения о функциях ниже.
Может существовать несколько моментальных снимков одной и той же базы данных-источника. Каждый моментальный снимок базы данных существует до тех пор, пока он не будет явно удален владельцем базы данных.
Моментальные снимки базы данных не связаны с резервным копированием путем создания моментальных снимков, с изоляцией моментальных снимков транзакций и с репликацией моментальных снимков.
В этом разделе.
Общие сведения о функциях
Моментальные снимки базы данных работают на уровне страниц данных. Перед первым изменением базы данных-источника исходная страница копируется из нее в моментальный снимок. Моментальный снимок хранит исходную страницу, оставляя записи данных в том виде, в котором они существовали на момент создания моментального снимка. Процесс повторяется для каждой страницы, изменяемой впервые. Для пользователя моментальный снимок никогда не меняется, поскольку операции считывания в моментальном снимке базы данных всегда обращаются к исходным страницам данных, независимо от того, сохранились они или нет.
Для хранения исходных страниц моментальный снимок использует один или более разреженных файлов. Изначально разреженный файл представляет собой пустой файл, который не содержит никаких пользовательских данных, и ему еще не выделено место на диске для пользовательских данных. По мере обновления страниц в базе данных-источнике размер файла увеличивается. На этом рисунке показано действие двух различных конфигураций обновления на размер моментального снимка. Конфигурация обновления А отражает условия, при которых в течение жизни моментального снимка обновляется только 30% всех исходных страниц. Конфигурация обновления Б отражает условия, при которых в течение жизни моментального снимка обновляется только 80% всех исходных страниц.
Преимущества моментальных снимков баз данных
Моментальные снимки можно использовать для составления отчетов.
Клиент может запрашивать моментальный снимок базы данных, что может потребоваться для создания отчетов на основе данных, относящихся к моменту создания моментального снимка.
Поддержка хронологических данных для создания отчетов.
Моментальный снимок позволяет пользователю получить доступ к данным по состоянию на определенный момент времени. Например, моментальный снимок базы данных можно создать в конце определенного периода времени (например, финансового квартала) для последующего создания отчетов. Отчеты о каждом таком периоде будут создаваться на основе данных из моментального снимка. Если на диске достаточно свободного места, можно создавать такие моментальные снимки для каждого отчетного периода и разрешить запросы результатов по отчетным периодам, что может понадобиться, например для исследования эффективности деятельности организации.
Экономия ресурсов за счет доступности данных, необходимых для создания отчетов, в зеркальных базах данных.
Применение моментальных снимков с зеркальным отображением баз данных позволяет сделать данные на зеркальном сервере доступными для отчетов. Кроме того, выполнение запросов в зеркальной базе данных может освободить ресурсы основной базы данных. Дополнительные сведения см. в статье Зеркальное отображение и моментальные снимки баз данных (SQL Server).
Защита данных от административных ошибок.
При возникновении пользовательской ошибки в базе данных-источнике эту базу данных можно вернуть к состоянию, в котором она находилась на момент создания определенного моментального снимка базы данных. Потеря данных затронет только изменения в базе данных, произведенные после создания моментального снимка.
Перед серьезными обновлениями, такими как массовое обновление или изменение схемы, следует создать моментальный снимок базы данных для защиты данных. В случае ошибки можно будет восстановить базу данных путем возврата ее в предыдущее состояние с помощью моментального снимка. Потенциально процедура возврата занимает гораздо меньше времени, чем восстановление из резервной копии, но при этом она не поддерживает накат.
Восстановление неприменимо к поврежденной базе данных и к базе данных, находящейся в режиме вне сети. Таким образом, создание регулярных резервных копий и тестирование плана восстановления необходимы для защиты базы данных.
Моментальные снимки базы данных зависят от базы данных-источника. Следовательно, стратегию резервного копирования и восстановления не следует заменять восстановлением данных с помощью моментальных снимков базы данных. Плановое создание резервных копий остается основным действием. Если необходимо восстановить базу данных-источник на момент времени, в который был создан моментальный снимок базы данных, реализуйте политику резервного копирования, позволяющую это делать.
Защита данных от пользовательских ошибок.
Регулярное создание моментальных снимков базы данных может уменьшить ущерб от серьезных ошибок пользователей, например от удаления той или иной таблицы. Чтобы обеспечить высокий уровень защиты можно создать несколько моментальных снимков баз данных, охватывающих период времени, достаточный, чтобы распознать большинство пользовательских ошибок и устранить их последствия. Например, если достаточно свободного места на диске, то можно поддерживать от 6 до 12 моментальных снимков, охватывающих 24-часовой интервал. При создании следующего моментального снимка самый ранний будет удаляться.
Для устранения ошибки пользователя можно с помощью моментального снимка вернуть базу данных в состояние непосредственно перед этой ошибкой. Потенциально процедура возврата занимает гораздо меньше времени, чем восстановление из резервной копии, но при этом она не поддерживает накат.
Кроме того, удаленную таблицу или другие потерянные данные можно восстановить вручную по данным в моментальном снимке. Например, можно выполнить массовое копирование данных из моментального снимка в базу данных и вручную выполнить слияние данных в базе.
От причины использования моментальных снимков зависит число параллельных снимков для одной базы данных, частота создания новых снимков и срок их хранения.
Управление тестовой базой данных.
При повторяющемся выполнении тестового протокола в базе данных тестовой среды полезно, чтобы база данных содержала одинаковые данные в начале каждого цикла тестирования. Перед выполнением первого цикла разработчик приложения или тестировщик может создать моментальный снимок тестовой базы данных. После каждого запуска тестирования базу данных можно быстро вернуть в предыдущее состояние путем возврата моментального снимка базы данных.
Термины и определения
database snapshot Согласованное на уровне транзакций, доступное только для чтения статическое представление базы данных (базы данных-источника).
базы данных-источника Для моментального снимка базы данных — база данных, в которой создан моментальный снимок. Моментальные снимки базы данных зависят от базы данных-источника. Они должны находиться на одном экземпляре сервера вместе с базой данных. Более того, если по какой-либо причине база данных становится недоступной, все ее моментальные снимки также становятся недоступными.
разреженный файл Файл, предоставленный файловой системой NTFS, в результате чего он занимает значительно меньше места на диске, чем обычные файлы. Разреженный файл используется для хранения страниц, помещенных в моментальный снимок базы данных. После создания разреженный файл занимает немного места на диске. По мере занесения данных в моментальный снимок базы данных файловая система NTFS постепенно выделяет место на диске для соответствующего разреженного файла.