- •Лекция №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
- •Представления каталога
- •Функции динамического управления
- •Типы определяемых пользователем функции
- •Возвращающие табличное значение определяемые пользователем функции
- •Определяемые пользователем встроенные функции
- •Концепция транзакций
- •Эффекты одновременного доступа
- •Блокировки и управление версиями строк
- •Типы управления одновременным доступом
- •Режимы блокировки
- •Взаимоблокировка
- •Отображение сведений о блокировках
- •Режимы транзакций
- •Автоматическая фиксация транзакций
- •Явные транзакции
- •Неявные транзакции
- •Распределенные транзакции
- •Уровни изоляции в ядре субд
Поддержка больших строк
Максимальный объем данных и служебного кода, содержащихся в одной строке на странице, составляет 8 КБ. Это ограничение может быть нарушено только в двух случаях:
если строка содержит данные типа varchar(max), nvarchar(max) или varbinary (max) - размер этих данных не учитывается. Такие данные будут храниться в виде последовательности страниц типа «Текст/изображение», а в странице содержащей строку будет храниться только указатель на начало этой последовательности.
если строка содержит данные переменной длины типа varchar(не max), nvarchar(не max) varbinary (не max) или sql_variant, то как только общий размер строки превысит предел в 8 060 байт, SQL Server динамически перемещает один или несколько столбцов переменной длины на отдельные страницы, начиная со столбца с наибольшим размером. Когда происходит перемещение столбца на отдельную страницу, на исходной странице сохраняется только указатель. Если при последующей операции размер строки уменьшается, SQL Server динамически перемещает столбцы обратно на исходную страницу данных. Важно отметить, что в данном случае предел в 8 060 байт может превышать только общий размер строки данных, при этом размер каждого поля строки не может быть больше размера страницы.
Экстенты
Экстенты являются основными единицами организации пространства и используются для эффективного управления страницами. Экстент - это коллекция, состоящая из восьми физически непрерывных страниц.
SQL Server поддерживает два типа экстентов.
Однородные экстенты принадлежат одному объекту; все восемь страниц в кластере могут быть использованы только этим владеющим объектом.
Смешанные экстенты могут находиться в общем пользовании у не более восьми объектов. Каждая из восьми страниц в экстенте может находиться во владении разных объектов.
Использование смешанных экстентов позволяет сделать распределение места более эффективным, поскольку SQL Server не размещает целые экстенты для таблиц с небольшим объемом данных.
Новая таблица или индекс - это обычно страницы, выделенные из смешанных экстентов. При увеличении размера таблицы или индекса до восьми страниц эти таблица или индекс переходят на использование однородных экстентов для последовательных единиц распределения. При создании индекса для существующей таблицы, в которой содержится достаточно строк, чтобы сформировать восемь страниц в индексе, все единицы распределения для индекса находятся в однородных экстентах.
FILESTREAM
На практике при создании приложений часто приходится хранить большие объемы неструктурированных данных, например, текстовые документы, изображения и видеоролики. Хранение множества таких объектов в реляционной базе данных может привести к падению производительности SQL Server Database Engine, поскольку для их кэширования будет использоваться буферный пул SQL Server. Поэтому обычно такие неструктурированные данные хранятся за пределами базы данных отдельно от структурированных данных. Подобное разделение как правило приводит к усложнению логики приложения. Либо, если данные связаны со структурированным хранилищем, могут быть ограничены возможности файловых потоков и производительность.
В SQL Server 2008 был добавлен новый тип хранения больших двоичных объектов (BLOB) FILESTREAM, который объединяет компонент Database Engine с файловой системой NTFS, размещая данные больших двоичных объектов (BLOB) типа varbinary(max) в файловой системе в виде файлов. Манипулирование данными, хранящимися в FILESTREAM осуществляется при помощи инструкций Transact-SQL, что позволяет использовать оптимизированное хранилище без изменения логики приложений его использующих. Интерфейсы файловой системы Windows также обеспечивают потоковый доступ к этим данным.
Для кэширования данных файлов в хранилище FILESTREAM используется системный кэш NT, что позволяет снизить возможное влияние данных FILESTREAM на производительность компонента Database Engine, поскольку буферный пул SQL Server не используется и память доступна для обработки запросов.
В SQL Server 2008 большие двоичные объекты (BLOB) могут храниться двумя способами:
данные стандартного типа varbinary(max), данные которых хранятся в таблице
объекты FILESTREAM типа varbinary(max), данные которых хранятся в файловой системе
Выбор в качестве хранилища базы данных или файловой системы определяется размером и назначением данных. Объекты FILESTREAM следует использовать в следующих случаях:
средний размер сохраняемых объектов превышает 1 МБ, поскольку при работе с объектами меньшего размера сохранение больших двоичных объектов (BLOB) типа varbinary(max) в базе данных часто позволяет добиться лучшей производительности потоков;
важен быстрый доступ для чтения;
Хранилище FILESTREAM реализовано в виде столбца типа varbinary(max), данные которого хранятся в файловой системе как большие двоичные объекты (BLOB). Стандартное ограничение типа varbinary(max), согласно которому размер файла не должен превышать 2 ГБ, не применяется к объектам BLOB, сохраняемым в файловой системе - размеры объектов ограничены только размером тома файловой системы.
Данные FILESTREAM могут сохраняться только в файловых группах FILESTREAM. Файловая группа FILESTREAM представляет собой особый тип файловой группы, в которой вместо файлов базы данных содержатся системные каталоги файлов. Эти системные каталоги файлов называются контейнерами данных, и являются интерфейсом между хранилищем компонента Database Engine и хранилищем файловой системы.