- •Концепция баз данных
- •Не реляционные модели данных. Примеры реализации.
- •Реляционная модель данных. Таблицы, записи, поля, связи.
- •Нормализация баз данных
- •Достижения реляционной алгебры
- •Особенности языка sql
- •Преимущества и недостатки sql
- •Реляционные операции.
- •Расширения, диалекты и средства интеграции языка sql
- •Группы операторов sql и операторы, входящие в группы.
- •Sql и реляционная модель. Компромиссы в технических решениях
- •Базы данных и субд. Определение реляционной субд.
- •Развитие реляционных субд. Современные субд. Классификация субд.
- •Основные функции субд (в скобочках в основном дополнение пункта, а не расшифровка)
- •Транзакции. Свойства транзакции.
- •Поддержка транзакций в sql.
- •Механизмы транзакций. Снапшот.
- •Блокировки и клинчи. Разрешение клинчей
- •Журнализирование. Зачем нужны журналы транзакций.
- •Восстановление субд после сбоев.
- •Управление внешней памятью.
- •Словарь субд. Данные в словаре субд.
- •Архитектура субд. Взаимодействие субд с клиентом.
- •Создание таблиц и атрибутов. Ограничение таблиц и атрибутов.
- •Типы связей между сущностями и их реализация в реляционной субд.
- •Ключи, как средство создания связей, первичные и внешние ключи.
- •Ключи и атрибуты. Суррогатные ключи как идеальные первичные ключи.
- •Вопрос 31 про ключи.
- •Ключи и индексы.
- •Использование индексов и основные сведения о индексах.
- •Удаление записей и целостность базы данных.
- •Секционирование и кластеризация таблиц.
- •Основные цели и основной результат проектирования бд.
- •Представление и их место в бд.
- •Роли пользователей субд. Пользователи, роли и разграничение прав доступа.
- •Хранимые (встроенные) процедуры субд. Типы хранимых процедур.
- •Триггеры и их использование в субд.
- •NoSql базы, особенности и место в информационных системах.
- •Особенности тестирования программ, написанных на языке sql.
- •Администрирование субд. Основные функции администратора субд.
- •Обеспечение живучести и отказоустойчивости. Копирование и репликация.
Транзакции. Свойства транзакции.
По-простому:
Транза́кция (англ. transaction) — группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена либо целиком и успешно, либо не выполнена вообще.
По-правильному:
Транзакция это процесс, который переводит базу данных из одного согласованного состояния, в другое согласованное состояние. Допускается, что в процессе транзакции согласованность может нарушаться, но извне транзакции этого не видно
Свойства:
Atomic - атомарность. Транзакция это неделимая единица, которая должна быть либо выполнена, либо отменена.
Coordination - согласованность. Смысл транзакции состоит в том, чтобы база данных переходила из одного согласованного состояния в другое.
Insulativity - изолированность. Каждая транзакция, которая выполняется, не зависит от остальных. Все результаты одного процесса, доступные в промежутках, не должны быть видны другим транзакциям.
Duration - надежность. Все результаты, которые были достигнуты в ходе успешной транзакции, наверняка сохраняются в базе данных.
Поддержка транзакций в sql.
Под транзакцией понимается некоторая группа DML команд. Все изменения сделанные ими, сохраняются в отдельной области памяти до окончательного подтверждения изменений (успешное завершение транзакции), либо до их отмены. Если во время транзакции делается запрос на выборку данных, то создается отдельное представление
Команды управления транзакцией(лекции):
START TRANSACTION /* отмечает начало транзакции */
......
Тело транзакции
…….
SAVEPOINT /* отмечает промежуточную точку сохранения*/
......
Тело транзакции
…….
Обработка ошибки
ROLLBACK /* откатывает все изменения текущей транзакции */
......
Тело транзакции
…….
COMMIT /* сохраняет все изменения текущей транзакции */
Еще бывают:
RELEASE SAVEPOINT - уничтожить точку отката, что позволяет освободить часть ресурсов до завершения транзакции;
SET TRANSACTION - устанавливает характеристики текущей транзакции. Если транзакция не начата явно, то эта команда игнорируется в PostgreSQL.
Пример:
BEGIN
...
SAVEPOINT pt1; -- сохранили точку отката
...
EXCEPTION
WHEN VALUE_ERROR THEN -- неправильное значение
-- SAVEPOINT можно опустить
ROLLBACK TO SAVEPOINT pt1;
WHEN OTHERS THEN -- другие исключения
...
END;
Механизмы транзакций. Снапшот.
Транзакции обеспечивают целостность БД при возникновении ошибок и многопользовательском доступе.
SNAPSHOT - Моментальный снимок данных. Это средний уровень изолированности. Он позволяет транзакции видеть только те данные, которые существовали в момент старта транзакции. Если другие заинтересованные транзакции изменили запись и подтвердили изменения, то SNAPSHOT - транзакция все равно не увидит этих изменений. Однако она не блокирует данные, с которыми работает.
SNAPSHOT TABLE STABILITY - еще более закрытый уровень изоляции. Транзакции такого уровня не только делают снимок данных, они также блокируют на запись те данные, с которыми работают. Пока такая транзакция не подтверждена, остальные транзакции гарантированно не смогут изменить эти данные. Кроме того, транзакция SNAPSHOT TABLE STABILITY просто не сможет получить доступ к таблице, если в настоящий момент другая транзакция изменяет в ней данные.
