Зеркальное отображение и моментальные снимки баз данных (SQL Server)
Область применения: SQL Server
Преимущество зеркальной базы данных проявляется в возможности использовать ее для разгрузки при формировании отчетов. Чтобы использовать зеркальную базу данных для выполнения отчетов, можно создавать моментальные снимки базы данных и направлять запросы клиентских соединений к самому позднему снимку. Моментальный снимок базы данных представляет собой статичный, доступный только для чтения, согласованный по транзакциям моментальный снимок состояния базы данных-источника на момент создания снимка. Для создания снимка базы данных в зеркальной базе данных необходимо привести эту базу данных в синхронизированное состояние зеркального отображения.
В отличие от самой зеркальной базы данных, моментальный снимок базы данных доступен клиентам. Пока зеркальный сервер соединен с основным сервером, можно направлять запрашивающих отчеты клиентов на подключение к моментальному снимку. Имейте в виду, что так как моментальный снимок базы данных является статичным, новые данные недоступны. Чтобы относительно новые данные были доступными для пользователей, необходимо периодически создавать новый моментальный снимок базы данных, а приложения должны устанавливать входящие клиентские соединения с наиболее поздним снимком.
Новый моментальный снимок базы данных почти пустой, но по мере того, как новые страницы базы данных впервые обновляются, снимок растет. Так как каждый моментальный снимок базы данных увеличивается, каждый снимок потребляет столько же ресурсов, как и обычная база данных. В зависимости от конфигураций зеркального и основного сервера, избыточное число моментальных снимков базы данных в зеркальной базе данных может уменьшить производительность основной базы данных. Поэтому, рекомендуется хранить лишь несколько относительно новых моментальных снимков зеркальной базы данных. Обычно после создания замещающего моментального снимка следует перенаправить входящие запросы на новый моментальный снимок, а после завершения текущих запросов удалить предыдущий снимок.
Примечание.
Дополнительные сведения о моментальных снимках базы данных см. в статье Моментальные снимки базы данных (SQL Server).
Если происходит переключение ролей, то база данных и ее моментальные снимки перезапускаются, при этом пользователи временно отключаются. Впоследствии моментальные снимки базы данных остаются на экземпляре сервера, где они были созданы, который стал новой основной базой данных. Пользователям эти снимки будут доступны и после отработки отказа. Однако при этом появляется дополнительная нагрузка на новый основной сервер. Если в среде важна производительность, рекомендуется создавать моментальный снимок новой зеркальной базы данных, когда она становится доступной, и перенаправлять клиентов на новый снимок, а все моментальные снимки бывшей зеркальной базы данных удалять.
Примечание.
В качестве специального решения для отчетов, обладающих достаточной масштабируемостью, можно рассмотреть репликацию. Дополнительные сведения см. в статье SQL Server Replication.
Пример
В данном примере создаются моментальные снимки зеркальной базы данных.
Предполагается, что в сеансе зеркального отображения используется база данных AdventureWorks2022
. В данном примере создаются три моментальных снимка на зеркальной копии базы данных AdventureWorks
, которая находится на диске F
. Моментальные снимки называются AdventureWorks_0600
, AdventureWorks_1200
и AdventureWorks_1800
, имена означают приблизительное время создания снимков.
Создается первый моментальный снимок базы данных на зеркальной копии
AdventureWorks2022
:CREATE DATABASE AdventureWorks_0600 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP') AS SNAPSHOT OF AdventureWorks2022
Создается второй моментальный снимок базы данных на зеркальной копии
AdventureWorks2022
. Пользователи, которые все еще работают со снимкомAdventureWorks_0600
, продолжают его использовать.CREATE DATABASE AdventureWorks_1200 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP') AS SNAPSHOT OF AdventureWorks2022
На этом этапе новые клиентские соединения можно программно направлять на последний моментальный снимок.
Создается третий моментальный снимок на зеркальной копии
AdventureWorks2022
. Пользователи, которые все еще работают со снимкамиAdventureWorks_0600
иAdventureWorks_1200
, могут продолжать их использовать.CREATE DATABASE AdventureWorks_1800 ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP') AS SNAPSHOT OF AdventureWorks2022
На этом этапе новые клиентские соединения можно программно направлять на последний моментальный снимок.
Связанные задачи
См. также
Моментальные снимки базы данных (SQL Server)
Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server)