- •Лекция №1 Информационные системы
- •Лекция № 2 Базы данных и стория появления бд
- •Основная концепция технологии бд:
- •Основные понятия курса (определения):
- •Характеристики субд
- •Основные свойства бд:
- •Лекция №3 Этапы проектирования бд Обобщенная архитектура субд
- •Этапы проектирования бд
- •Лекция №4 Модели данных
- •Реляционная модель данных (рмд)
- •Лекция №5
- •Рмд: языки манипулирования данными (ямд)
- •Лекция №6
- •Нормализация отношений
- •Определение фз
- •Лекция №7 Нормализация отношений (продолжение)
- •Лекция № 8 Платформа sql Server
- •Выпуски sql Server
- •Компоненты sql Server
- •Экземпляры sql Server
- •Системные базы данных
- •Лекция № 9 Файлы и файловые группы
- •Файловая группа по умолчанию
- •Физическая структура файлов данных
- •Страницы
- •Поддержка больших строк
- •Экстенты
- •Журнал транзакций и восстановление
- •Физическая архитектура журнала транзакций
- •Лекция № 10 Опции базы данных
- •Параметры сортировки (collation)
- •Модель восстановления (recovery)
- •Уровень совместимости (compatibility_level)
- •Автоматические
- •Восстановление
- •Состояние
- •Лекция № 11
- •Изменение настроек базы данных
- •Удаление базы данных
- •Лекция № 12 Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Создание таблиц
- •Изменение таблиц
- •Удаление таблиц
- •Системные функции
- •Строковые функции
- •Функции даты (времени)
- •Обновление данных
- •Лекция № 14 Создание индексов и управление индексами Структура хранения данных
- •Структуры кластеризованного индекса
- •Структуры некластеризованного индекса
- •Оптимизация индексов
- •Источники информации об индексах
- •Создание индексов
- •Вычисляемые столбцы
- •Изменение индексов
- •Восстановление индексов
- •Удаление индексов
- •Лекция № 15 Ограничения целостности данных Назначение
- •Типы ограничений целостности данных
- •Определение default значений
- •Ограничение not null
- •Ограничения check
- •Ограничения unique
- •Ограничения primary key
- •Ограничения foreign key
- •Ссылочная целостность
- •Индексирование ограничений foreign key
- •Количество ограничений foreign key в таблице
- •Ограничения столбцов и таблиц
- •Применение триггеров
- •Программирование триггеров
- •Создание триггеров
- •Изменение триггеров
- •Удаление триггеров
- •Лекция № 16 Представления Что такое представление?
- •Использование представлений
- •Источники информации о представлениях Обозреватель объектов sql Server Management Studio
- •Функции динамического управления
- •Создание предавлений
- •Изменение представлений
- •Удаление представлений
- •Обновление данных в представлении
- •Типы представлений Стандартные представления
- •Индексированные представления
- •Секционированные представления
- •Секционированные представления
- •Создание таблиц-элементов
- •Определение распределенных секционированных представлений
- •Правила таблиц
- •Правила столбцов
- •Правила столбцов секционирования
- •Индексированные представления
- •Создание индексированных представлений
- •Лекция № 17 Хранимые процедуры и функции Преимущества хранимых процедур
- •Источники информации о хранимых процедурах Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Перекомпиляция хранимых процедур
- •Преимущества определяемых пользователем функций
- •Источники информации о пользовательских функциях Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Типы определяемых пользователем функции
- •Возвращающие табличное значение определяемые пользователем функции
- •Определяемые пользователем встроенные функции
- •Концепция транзакций
- •Эффекты одновременного доступа
- •Блокировки и управление версиями строк
- •Типы управления одновременным доступом
- •Режимы блокировки
- •Взаимоблокировка
- •Отображение сведений о блокировках
- •Режимы транзакций
- •Автоматическая фиксация транзакций
- •Явные транзакции
- •Неявные транзакции
- •Распределенные транзакции
- •Уровни изоляции в ядре субд
Блокировки и управление версиями строк
Компонент Database Engine использует блокировки и управление версиями строк для гарантии целостности транзакций и поддержания согласованности базы данных, когда несколько пользователей обращаются к одним и тем же данным в одно и то же время.
Блокировка и управление версиями строк не дают пользователям считывать незафиксированные данные и не дают нескольким пользователям менять одни и те же данные в одно и то же время. Без этих механизмов запросы к таким данным могли бы возвращать непредвиденные результаты, например данные, которые еще не были зафиксированы в базе данных.
Блокировка Каждая транзакция запрашивает блокировку разных типов ресурсов, например строк, страниц или таблиц, от которых эта транзакция зависит. Блокировка не дает другим транзакциям изменять ресурсы, чтобы избежать ошибок в транзакции, запросившей блокировку. Каждая транзакция освобождает свои блокировки, если больше не зависит от блокируемого ресурса.
Управление версиями строк Компонент Database Engine имеет возможность хранить версии каждой измененной строки. Приложения могут указать, что транзакция будет использовать версии строк для просмотра данных, существовавших до ее начала или до начала запроса, вместо того, чтобы защищать все операции чтения блокировками. При управлении версиями строк вероятность того, что операция чтения будет блокировать другие транзакции, значительно снижается.
Блокировка - это механизм, с помощью которого компонент Microsoft SQL Server Database Engine синхронизирует одновременный доступ нескольких пользователей к одному фрагменту данных.
Прежде чем транзакция сможет распоряжаться текущим состоянием фрагмента данных, например, для чтения или изменения данных, она должна защититься от изменений этих данных другой транзакцией. Для этого транзакция запрашивает блокировку фрагмента данных. Существует несколько режимов блокировки, например общая или монопольная. Режим блокировки определяет уровень подчинения данных транзакции. Ни одна транзакция не может получить блокировку, которая противоречит другой блокировке этих данных, предоставленной другой транзакции. Если транзакция запрашивает режим блокировки, противоречащий предоставленной ранее блокировке тех же данных, экземпляр компонента Database Engine приостанавливает ее работу до тех пор, пока первая блокировка не освободится.
При изменении фрагмента данных транзакция удерживает блокировку, защищая изменения до конца транзакции. Продолжительность блокировки, полученной для защиты операций чтения, зависит от уровня изоляции транзакции. Все блокировки, удерживаемые транзакцией, освобождаются после ее завершения (при фиксации или откате).
За управление блокировками отвечает внутренний компонент Database Engine, называемый диспетчером блокировок. Когда экземпляр компонента Database Engine обрабатывает инструкцию Transact-SQL, обработчик запросов компонента Database Engine определяет, к каким ресурсам требуется доступ. Обработчик запросов определяет, какие типы блокировок требуются для защиты каждого ресурса, в зависимости от типа доступа и уровня изоляции транзакции. Затем обработчик запросов запрашивает соответствующую блокировку у диспетчера блокировок. Диспетчер блокировок предоставляет блокировку, если она не противоречит блокировкам, удерживаемым другими транзакциями.