|
Программирование >> Программирование баз данных
время. Контрольные точки создаются также, если останов сервера происходит с применением указанных ниже способов. Останов сервера с использованием программы Management Studio. Вызов команды net stop mssqlserver операционной системы Windows NT из командной строки. Открытие окна Службы с помощью пиктограммы Службы на панели управления Windows с последующим выбором службы mssqlserver и щелчком на кнопке Стоп (окно Службы можно также открыть с помощью команды Управление контекстного меню пиктограммы Мой компьютер). Сам автор рассматривает как предпочтительную ту ситуацию, в которой контрольные точки создаются в результате нормального завершения работы сервера, а не в результате применения опции Checkpoint on Recovery. Особенно благоприятным в этой ситуации является то, что все зафиксированные транзакции переносятся в физическую базу данных (а не остаются в журнале), поэтому конечное состояние базы данных становится гораздо более предсказуемым, а вероятность возникновения в дальнейшем нарушений целостности данных снижается. Кроме того, при желании можно воспользоваться определенным способом сокращения продолжительности процесса останова сервера. Для этого необходимо вызвать на вьшолнение команду SHUTDOWN языка T-SQL в интерфейсе поддержки запросов. Чтобы устранить задержку, связанную с созданием контрольной точки (а также, вообще говоря, обойти сам этап создания контрольной точки), достаточно ввести в команду останова ключевое слово WITH N0 WAIT: SHUTDOWN [WITH NO WAIT] Следует отметить, что сам автор категорически возражает против использования команды останова сервера в такой форме, если речь не идет об ее использовании в процессе разработки программного обеспечения. Применение команды останова с отменой ожидания приводит к тому, что последующий запуск происходит в течение более продолжительного времени, чем обычно, в связи с восстановлением баз данньгх на сервере. Создание контрольной точки после модификации параметров базы данных Контрольная точка создается после внесения любых изменении в параметры базы данных, независимо от того, по каким причинам произошло изменение той или иной опции (допустим, в результате применения процедуры sp dboption или оператора ALTER DATABASE). Контрольная точка создается до того, как будут фактически внесены изменения в базу данных. Создание контрольных точек при использовании опции Truncate On Checkpoint Если применение опции базы данных Truncate On Checkpoint разрешено (что является обычной практикой при осуществлении этапа разработки базы данных), то в СУБД SQL Server контрольная точка каждый раз создается автоматически после того, как журнал заполняется больше чем на 70%. Ситуация, в которой время восстановления превышает заданное значение интервала восстановления Выше в данной главе уже было вкратце отмечено (более подробные сведения будут приведены ниже), что в СУБД SQL Server после каждого запуска выполняется процесс, называемый восстановлением. В СУБД SQL Server контрольная точка создается автоматически каждый раз после того, как прогнозируемая продолжительность времени выполнения процесса восстановления превышает значение времени, заданное в качестве параметра базы данных, называемого интервалом восстановления. По умолчанию в качестве значения интервала восстановления указан нуль, а это означает, что решение о выборе конкретного значения этого параметра принимает СУБД SQL Server (на практике оно составляет примерно 1 минуту). Аварийный отказ и восстановление Фактически восстановление баз данных происходит при каждом запуске СУБД SQL Server. Восстановление сводится к тому, что открывается файл базы данных, а затем в базу данных вносятся все зафиксированные изменения, которые были отражены в журнале со времени применения последней контрольной точки (изменения вносятся путем их записи в физические файлы базы данных). Применительно ко всем зарегистрированным в журнале изменениям, за которыми не следует соответствую-ш;ая операция фиксации, выполняется откат. Иными словами, при этом по сути исключается вся информация о том, что когда-либо происходили такие изменения. Рассмотрим осуществление указанных действий на примере выполнения нескольких транзакций в базе данных. Допустим, что в журнале содержится информация о пяти транзакциях (рис. 12.2). Ниже приведено последовательное описание того, что происходит в каждой из этих транзакций. Транзакция 1 На этапе восстановления применительно к транзакции 1 не будет выполнено никаких действий. После фиксации этой транзакции уже была применена одна контрольная точка, поэтому все изменения, осуществляемые в этой транзакции, уже были полностью зафиксированы в базе данных. В ходе восстановления применительно к транзакции 1 не требуется выполнение каких-либо действий, а данные, которые будут считываться в кэш в ходе дальнейшего выполнения операций обработки данных, должны отражать результаты всех зафиксированных транзакций. Транзакция 2 Ко времени применения последней контрольной точки транзакция 2 не была завершена, поэтому ее фиксация еще не произошла (иными словами, выполнение транзакции 2 продолжалось). Но транзакция, для которой не выполнена фиксация, фактически не рассматривается в процессе применения контрольной точки. Поэтому должен быть выполнен так называемый накат этой транзакции. Выполнение операции наката сводится к тому, что все страницы, связанные с выполнением транзакции, снова считываются в кэш, а информация из журналов применяется для повторного выполнения всех операторов, применяемых в составе данной транзакции. После завершения этих действий состояние транзакции 2 должно полностью соответствовать тому, в котором она находилась до аварийного завершения работы системы. (контрольная точка) (Контрольная точка) (контрольная точка) Отказ системы Транзакция 1 Транзакция 2 Транзакция 3 Транзакция 4 Транзакция 5 Рис. 12.2. Пять транзакций, рассматриваемых в качестве примера Транзакция 3 На первый взгляд может создаться другое впечатление, но действия, которые должны быть осуществлены при восстановлении базы данных в этой транзакции, полностью соответствуют тем, которые связаны с транзакдией 2. И в данном случае транзакция 3 не бьша завершена во время применения последней контрольной точки, т.е. эта транзакция не принимала участие в осуществлении контрольной точки, как и транзакция 2. Единственное отличие состоит в том, что к этому времени транзакция 3 даже не сущест вовала, но с точки зрения процесса восстановления это не имеет большого значения, поскольку подход к восстановлению данных, модифицированных в результате вьшолнения транзакции, зависит от того, бьша ли выполнена фиксация этой транзакции. Транзакция 4 Транзакция 4 не бьша завершена ко времени возникновения аварийного отказа системы, поэтому должен быть выполнен ее откат. По существу, все изменения, внесенные в ходе этой транзакции, должны быть полностью отменены. Это означает, что пользователь должен повторно ввести все данные, относящиеся к этой транзакции, и все связанные с ней процессы обработки данных необходимо начать сначала.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |