Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы и банки данных.doc
Скачиваний:
10
Добавлен:
12.11.2019
Размер:
745.98 Кб
Скачать

Тема 11.

1. Определение синонимов объектов. Понятие транзакции. Управление параллелизмом

1. Определение синонимов объектов. Понятие транзакций. Управление параллелизмом.

Указывать имена таблиц не принадлежащих пользователю в формате идентификатор_влдельца.имя_таблицы не всегда является удобным. Эту проблему решает аппарат назначения синонимов объекту. Для таблицы или представления могут быть определены дополнительные имена (синонимы) по следующей команде:

CREATE [PUBLIC] SINONYM

синоним FROM объект;

Здесь синоним – дополнительное имя, объект – это таблица или представление и PUBLIC определяет общедоступный синоним. Его может создавать только владелец таблицы или администратор базы данных.

Пример:

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

CREATE SINONYM План_Иванова

FOR Иванов.План_работы;

После этого он может использовать следующую команду:

SELECT * FROM План_Иванова;

При этом, следует отметить, что определение общедоступных синонимов не делает таблицу общедоступной, т.е. привиелегии всё равно нужно назначать по команде GRANT.

Синонимы можно уничтожить по следующей команде:

DROP SINONYM синоним;

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

Ошибки из-за действия человека или компьютера возникают достаточно часто и необходимо давать пользователю отказаться от ранее выполненных действий. Команда SQL, влияющая на содержимое или структуру базы данных, не является необратимой.

Например, удалив записи по команде DELETE или изменив структуру таблицы по команде ALTER TABE, можно отказаться от ранее выполненных действий. Возможна так же отмена группы команд. Такие группы называются транзакциями.

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

COMMIT WORK – т.е. «закрыть транзакцию»

или команды

ROLLBACK WORK – «откатить транзакцию».

В обоих случаях транзакции начинаются сначала.

Может быть установлен или отменён режим автоматического закрытия транзакции после каждой корректной команды в следующем виде:

SET AUTOCOMMIT ON/OFF

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

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

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

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

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