9.3.3. Операторы создания и удаления индексов
Поскольку базы данных предназначены для хранения больших
объемов
информации,
эффективность
их
использования
в
информационных системах во многом определяется скоростью выборки
данных. Для увеличения скорости выборки в БД обычно используют
специальную структуру, которая называется индексом. Стандарт языка
SQL не предусматривает использование индексов. Но тем не менее
разработчики СУБД охотно идут на включение средств поддержки
индексов в систему, несмотря на то, что наличие индекса увеличивает
нагрузку на систему из-за необходимости обновлять его при каждом
изменении данных таблицы, поскольку существенное повышение скорости
запросов окупает данные затраты.
Операторы создания и удаления индекса имеют следующий формат.
Создать индекс:
CREATE [UNIQUE] INDEX имя_индекса
OK имя_таблицы (столбец [ASC| DESC] [,_.])
Удалить индекс:
DROP INDEX имя_индекса
Если в операторе
CREATE INDEX
используется квалификатор
UNIQUE
,
TO
уникальность значений индекса автоматически поддерживается
системой. Для каждого из ключевых столбцов можно указать порядок
следования значений: по возрастанию —
ASC
(используется по умолчанию)
и по убыванию — DESC
10. Обеспечение функционирования баз данных
Восстановление
Восстановление в системе управления базами данных (СУБД)
означает восстановление самой базы данных, т.е. возвращение БД в
правильное состояние. Основной принцип, на котором строится такое
восстановление – это избыточность, которая организуется на физическом
уровне.
Транзакции
Транзакция – это логическая единица работы. Рассмотрим пример.
Предположим, что отношение P (отношение деталей) включает атрибут
TOTQTY, представляющий собой общий объем поставок для каждой
детали.
Значение TOTQTY для
любой
определенной
детали
предполагается равным сумме всех значений QTY для всех поставок
120
данной детали. На рис. 10.1. показано добавление в базу данных новой
поставки со значением 1000 для поставщика S5 и детали P1.
Рис.10.1 Пример транзакции
В приведенном примере предполагается, что речь идет об атомарной
операции. На самом деле добавление новой поставки – это выполнение
двух обновлений в базе данных (Insert добавляет новую поставку к
отношению SP, а Update обновляет значение TOTQTY для детали P1).
Кроме того, в базе данных между двумя обновлениями временно
нарушается требование, что значение TOTQTY для детали P1 равно сумме
всех значений QTY для этой детали. Таким образом, транзакция – не
просто одиночная операция системы баз данных, а скорее согласование
нескольких таких операций. В общем, это преобразование одного
согласованного состояния базы данных в другое, причем в
промежуточных точках база данных находится в несогласованном
состоянии.
Системный компонент, обеспечивающий атомарность называется
администратором транзакций, а ключами к его выполнению служат
операторы Commit transaction и Rollback Transaction.
• Оператор Commit transaction сигнализирует об успешном окончании
транзакции и что база данных находится вновь в согласованном
состоянии, а все обновления могут быть зафиксированы, т.е. стать
постоянными.
• Оператор Rollback Transaction сигнализирует о неудачном окончании
транзакции и что база данных находится в несогласованном
состоянии, а все обновления могут быть отменены.
Система поддерживает файл регистрации (журнал регистрации), где
записываются детали всех операций обновления, в частности новое и
старое значения модифицируемого объекта. Таким образом, при
BEGIN TRANSACTION;
INSERT ({S#:’S5’, P#:’P1’, QTY:1000}) INTO SP;
IF ошибка THEN GO TO UNDO;
UPDATE P WHERE P# = ’P1’ TOTQTY:=TOTQTY+1000;
IF ошибка THEN GO TO UNDO;
COMMIT
TRANSACTION;
GO
TO
FINISH;
UNDO: ROLLBACK
TRANSACTION;
FINISH: RETURN;
121
необходимости отмены некоторого обновления система использует
соответствующий файл регистрации для возвращения объекта в
первоначальное состояние.
Do'stlaringiz bilan baham: |