Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на ГОСЫ.docx
Скачиваний:
131
Добавлен:
10.05.2015
Размер:
808.24 Кб
Скачать

1. Базовые алгоритмические операторы (if, switch, for, while).

Операторы, управляющие порядком выполнения программы, называются управляющими. К ним относятся условные операторы: if, if-else, switch и операторы цикла: for, while, do-while.

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

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

Все операторы языка с++, кроме составных операторов, заканчиваются точкой с запятой ";".

if (<условие>) {<оператор1>};

else {< оператор2>};

for (<переменная>;<условие_выполнения>;<список_выражений>) {<тело_цикла>};

switch (case <константное_выражение1>:<оператор1>;

case <константное_выражение2>:<оператор2>;

default:<операторы>;};

while (<условие_выполнения {<тело_цикла>};

do {<тело_цикла>} while (<условие_выполнения>);

2. Понятие транзакций. Базовые свойства транзакций.

Методы управления транзакциями.

Под транзакцией понимается неделимая с точки зрения воз-

действия на БД последовательность операторов манипулирова-

ния данными (чтения, удаления, вставки, модификации) такая,

что возможны два итога:

• результаты всех операторов, входящих в транзакцию, со-

ответствующим образом отображаются в БД;

• воздействие всех этих операторов полностью отсутствует.

В СУБД транзакция начинается с оператора BEGIN.

При

этом если транзакция завершена оператором COMMIT, то результаты

фиксируются во внешней памяти; при завершении

транзакции оператором ROLLBACK результаты отсутствуют

во внешней памяти. Оператор COMMIT устанавливает так называемую точку фиксации, то есть момент, когда заканчивается логическая единица работы. Следовательно, БД будет находиться в согласованном (целостном) состоянии как в начале, так и в конце транзакции. При завершении транзакции оператором ROLLBACK БД тоже будет находиться в согласованном состоянии, так как никакого влияния на данных такая транзакция не окажет. Здесь под согласованностью будем понимать тот факт, что транзакции переводят БД из одного согласованного состояния в другое, то есть в такое, что выполняются все условия ограничения целостности. В свою очередь, понятие восстановление СУБД - процесс, подразумевающий возвращение БД в правильное состояние, если какой-либо процесс вызвал сбой данных. Восстановление базируется на принципе избыточности БД, при этом по части хранимых данных имеется возможность восстановления всей информации полностью. Система должна обеспечивать восстановление как после небольших нарушений (например, после неудачно завершенных транзакций), так и после серьезных сбоев (иногда их называют глобальными), например, сбоев питания. Глобальный сбой полностью действует на СУБД и обычно

выделяют два вида: сбой системы, нарушающий все выполняемые в данный момент транзакции, но не нарушающий БД физически, и сбой носителей, который представляет собой физическую угрозу для данных.

Восстановление системы после первого вида глобального сбоя

может быть осуществлено по журналу транзакций, в который

заносится информация о транзакциях, начавших свое выполнение, и транзакциях, успешно завершившихся. Если после перезагрузки системы в журнале будут встречены транзакции, начавшиеся до сбоя, но не закончившиеся, то для всех них выполняется оператор ROLLBACK, в результате чего БД снова будет находиться в целостном состоянии.

Процесс восстановления после сбоя носителей принципиально иной. Восстановление в этом случае осуществляется с резервной копии БД. Понятно, что для реализации этого процесса необходимо, чтобы в СУБД предусматривалось резервное копирование с помощью соответствующей программной реализации.

Следующий список раскрывает природу транзакций.

• Каждая транзакция имеет начало и конец.

• Любую транзакцию можно либо сохранить, либо отменить.

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

Под управлением транзакциями понимается наличие возможностей для подконтрольного осуществления транзакций, выполняемых в рамках общей системы управления базой данных. Говоря о транзакциях, мы имеем в виду выполнение команд INSERT, UPDATE и DELETE, рассматривавшихся в ходе предыдущего урока.

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

Управление транзакциями осуществляется с помощью следующих трех команд:

• COMMIT

• ROLLBACK

• SAVEPOINT

Команды управления транзакциями используются только с командами DML INSERT, UPDATE и DELETE. Например, оператор COMMIT не используется для подтверждения создания таблицы. При создании таблицы операция ее создания подтверждается автоматически. Точно так же нельзя с помощью команды ROLLBACK вернуть таблицу, только что удаленную из базы данных.

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

Команда COMMIT используется для передачи базе данных (сохранения) изменений, инспирированных транзакцией. Команда COMMIT сохраняет все транзакции, выполненные с момента предыдущего применения либо команды COMMIT, либо команды ROLLBACK.

Команда ROLLBACK используется для отмены транзакций, которые еще не были сохранены в базе данных. Команду ROLLBACK можно использовать для отмены только тех транзакций, которые были выполнены после применения последней из команд COMMIT или ROLLBACK.

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