Слайд 2Архитектура базы данных
На физическом уровне каждая БД SQL Server 2000 хранится как
минимум в двух файлах:
Файл данных (data file)
Файл журнала транзакций (transaction log file)
Каждая БД имеет один основной файл данных и может иметь дополнительные файлы данных, каждый из которых используется только этой БД.
Основной файл имеет, как правило, расширение .mdf. Основной файл содержит данные таблиц и индексов, а также служебную информацию, которая используется SQL Server при работе. Он содержит системные таблицы, где хранится описание объектов БД, информацию о расположении дополнительных файлов БД.
Дополнительные файлы имеют, как правило, расширение .ndf. Дополнительные файлы используются, например, для размещения БД на различных дисках.
Слайд 3Архитектура БД
SQL Server 2000 хранит информацию о расположении всех файлов БД в
двух местах:
в системной БД master
в основном файле БД
Сервер в основном использует информацию из БД master. Основной файл используется в случае, когда информация в БД master должна быть изменена – при обновлении сервера, при восстановлении БД master и добавлении БД к серверу при помощи хранимой процедуры sp_attach_db.
Слайд 4Файлы БД
Каждый файл данных имеет логическое имя, используемое при обработке операторов Transact-SQL
и физическое имя, используемое Windows.
Логическое имя должно быть уникально для отдельной БД и должно соответствовать правилам идентификации объектов SQL Server.
Физическое имя должно удовлетворять требованиям именования файлов в операционной системе.
Слайд 5Файлы БД
Дополнительными свойствами файла являются идентификатор начальный размер, величина приращения при увеличении
и максимальный размер.
Эти данные хранятся на странице заголовка файла, которая является первой страницей любого файла данных.
SQL Server уникально идентифицирует страницы по номеру файла и номеру страницы. Для нумерации страниц используются последовательные номера, начиная с 0.
Слайд 6Выделение пространства для таблиц и индексов
Для обеспечения хранения информации необходимо выделить свободное
место в файле данных и присовоить его соответствующему объекту.
Свободное пространство, выделяемое для таблиц и индексов, измеряется в экстентах .
Экстент – блок размером 64 кбайта и состоит из 8 страниц по 8 Кб каждая.
Экстенты бывают однородные и смешанные.
Слайд 7Выделение пространства для таблиц и индексов
При создании новой таблицы или индекса SQL
Server находит смешанный экстент, содержащий свободную страницу и связывает ее с созданным объектом.
Страница содержит данные, относящиеся только к одному объекту. Если объекту требуется дополнительное пространство, то SQL Server распределяет свободное пространство из смешанных экстентов, пока необходимо число страниц не достигнет 8, затем выделяется однородный экстент для данного объекта.
Если в файлах данных нет свободного пространства и разрешено их автоматическое увеличение, то SQL Server будет увеличивать их размер по алгоритму циклического обслуживания.
Слайд 8Таблица Index Allocation Map
При размещении страницы объекта в однородном или смешанном экстенте
используется таблица IAM, чтобы отследить все страницы, выделенные таблице или индексу.
Каждая страница IAM может указывать на 512000 страниц. Страницы IAM расположены в файле случайным образом и связаны друг с другом: первая страница IAM указывает на вторую и т.д.
Другие системные страницы:
PFS – страница свободного пространства страниц. Если необходимо добавить данные в страницы объекта используется PFS для определения страниц со свободным пространством.
GAM – страница глобальной карты размещений (используется для выделения экстента из свободного пространства). Страница GAM – это битовая карта 64000 экстантов, каждому из которых соответствует 1 бит.
SGAM – страница дополнительной глобальной карты размещений (используется для выделения пространства в смешанном экстенте). Каждая страница SGAM – это битовая карта 64000 экстентов, используемая SQL Server для определения смешанных экстентов со свободными страницами.
Слайд 9Хранение страниц индексов и страниц данных
При отсутствии индекса SQL Server хранит данные
на любой незаполненной странице в любом доступном экстенте, принадлежащем таблице.
Такое неорганизованное хранение данных называется кучей (heap). Страницы в куче хранятся беспорядочно и никак не связаны друг с другом.
Если на таблице не определены индексы, то для поиска записи SQL Server просматривает всю таблицу (для определения страниц таблицы используется страницы IAM).
Для ускорения поиска используются индексы для быстрого поиска данных. Каждый индекс хранит значение индексированного столбца таблицы в виде B-дерева.
В SQL Server 2000 используются два вида индексов:
кластерный;
некластерный.
Слайд 10Кластерный индекс
Для кластерного индекса сервер физически сортирует страницы в файле данных исходя
из значений ключа кластерного индекса.
Самый нижний уровень кластерного уровня представляет собой уровень данных.
При размещении новой строки в таблицу SQL Server 2000 просматривает двоичное дерево, определяя место размещение (и перемещая существующие строки данных и индексов).
Слайд 11Некластерный индекс
Уровень листьев (нижний уровень) некластерного индекса содержит указатель, с помощью которого
SQL Server определяет, где найти строку данных, соответствующую значению ключа индекса.
При добавлении новой строки, новая строка индекса добавляется в B-дерево, а новая строка данных помещается в любую страницу кучи.
Слайд 12Файлы журнала транзакций
Каждая БД содержит хотя бы один файл журнала транзакций.
Журнал транзакций
хранит записи обо всех изменениях БД и содержит информацию необходимую для отмены изменений или их выполнений повторно.
Каждый файл транзакций – отдельный файл операционной системы, используемый только одной БД, и имеет по умолчанию расширение .ldf.
Каждый журнал транзакций имеет логическое имя, используемое в предложениях Transact-SQL, и физическое.
К дополнительным свойствами файла транзакций относятся:
Идентификатор;
Начальный размер;
Приращение, при увеличении размера;
Максимальный размер.
Слайд 13Структура файла транзакций
Файл журнала транзакций содержит последовательность записей.
Каждая запись имеет порядковый номер
в журнале (Log Sequence Number, LSN). Журнал транзакций БД SQL Server рассматривает как единый журнал, безотносительно в скольких физических файлах он располагается.
SQL Server 2000 логически делит каждый физический файл журнала транзакций на несколько виртуальных файлов журнала (VLF). Количество виртуальных файлов определяется динамически в зависимости от размера физического файла.
Слайд 14Принцип работы журнала транзакций
SQL Server 2000 использует буферный кэш – хранящуюся в
оперативной памяти структуру, куда перемещаются страницы данных с диска. Приложения работают с данными, расположенными в кэше.
Измененная страница в кэше, еще не записанная на диск, называется затронутой страницей (dirty page).
Изменения вносятся вначале в журнал транзакций, а потом на диск. За выполнением данной процедуры следят встроенные механизмы SQL Server 2000.
Запись затронутой страницы из кэша на диск называется сбросом страниц (page flushing).
Запись журнала содержит всю информацию, необходимую для отмены или повторения любого изменения БД.
SQL Server 2000 периодически записывает затронутые страницы из кэша на диск. Запись данных производится в результате процесса – контрольная точка, либо поток отложенной записи просматривает затронутые страницы, записывает их на диск и освобождает пространство для новых страниц.
Если транзакция отменена или не завершена, журнал транзакций гарантирует, что все изменения внесенные незавершенными транзакциями будут отменены.
Слайд 15Процесс контрольной точки
Процесс контрольной точки используется для оптимизации использования буферного кэша, уменьшения
простоя в случае сбоя в работе кэша.
Процесс контрольной точки выполняется в следующих случаях:
если используется оператор CHECKPOINT
если используется оператор ALTER DATABASE
при корректном завершении работы экземпляра SQL Server
при автоматическом запуске процесса контрольной точки (выполняется периодически в зависимости от числа записей в активной части журнала).
Процесс контрольной точки записывает наименьший LSN, необходимый для отмены невыполненной транзакции – минимальный LSN (minLSN).
При запуске SQL Server начинается процесс восстановления каждой БД. Проверяются журналы транзакций на наличие незавершенных транзакций. MinLSN указывает наименьший LSN, с которого начинается просмотр.
Слайд 16Процесс контрольной точки
Записи с номерами транзакций меньше minLSN не являются активными. Для
уменьшения дискового пространства занятого журналом они могут быть удалены из файла журнала. Минимальной единицей, которая удаляется при усечении файла транзакций – виртуальный файл журнала.
При использовании простой модели восстановления процесс контрольной точки просто удаляет неактивную часть из всех виртуальных файлов и потом они используются повторно.
При использовании модели восстановления отдельных операций или модели восстановления результатов импорта необходимо предварительно создать копию журнала транзакций, а потом удалить неактивную часть.
Процесс контрольной точки освобождает пространство в физическом файле журнала транзакций.
Слайд 17Потоки операционной системы
SQL Server использует рабочий поток и поток отложенной записи для
периодического обращения к буферу памяти, планирования асинхронной записи на диск затронутых страниц и освобождения неактивных страниц.
Рабочие потоки являются потоками других процессов, таких как процесс асинхронного чтения данных, инициированных пользователем или приложениям. Таки потоки обращаются к буферу, ожидая выполнения своего задания.
Поток отложенной записи периодически проверяет список свободных буферов и, если его размер меньше заданного, он сканирует буферный кэш и освобождает пространство.
Слайд 18Модели восстановления
В SQL Server 2000 существует три модели восстановления:
простая (Simple model)
отдельных операций
(Full model);
результатов импорта (Bulk-Logged model).
Каждая БД имеет одну из моделей. Выбор модели влияет на размер журнала транзакций, а также возможности резервного копирования и восстановления данных.
Слайд 19Модель восстановления отдельных операций
Данная модель позволяет восстановить БД до того состояния, в
котором она была на момент сбоя или на любой иной указанный момент времени.
При использовании данной модели в журнал заносятся все операции (в том числе широкомасштабные – такие как, операция создания индекса, копирования данных). Такие операции требуют значительного объема доступного пространства в журнале транзакций.
При выборе такой модели необходимо регулярно и часто выполнять резервное копирование журнала транзакций.
Слайд 20Модель восстановления результатов импорта
При использовании данной модели регистрируются все операции, кроме широкомасштабных.
Хранимой информации о широкомасштабных операциях недостаточно для восстановления после сбоев. Модель не поддерживает восстановление на выбранный момент времени.
Данная модель позволяет сократить место для журнала транзакций.
При выборе данной модели также необходимо периодически выполнять резервное копирование журнала транзакций.
Слайд 21Простая модель
При использовании простой модели восстановления в журнал транзакций записываются все операции,
в том числе и широкомасштабные.
Но для восстановления данных на используется резервное копирование журнала транзакций, каждый процесс контрольной точки усекает файл журнала. Это позволяет избежать переполнения журнала транзакций, но при длинных транзакциях возможно переполнение журнала.
При использовании простой модели БД может быть восстановлена только до момента, когда была сделана последняя резервная копия.
Системная БД tempbd всегда использует простую модель. Пользовательские БД используют простую модель по умолчанию, однако данный режим можно изменить.
Слайд 22Выбор модели восстановления
С помощью MS SQL Server Enterprise Manager для выбранной БД
можно установить режим восстановления
Слайд 23Системные таблицы SQL Server
SQL Server использует системные таблицы для управления работой СУБД
и связанными с ней таблицами.
Системные таблицы делятся на две группы:
системный каталог;
каталог базы данных.
Изменение или удаление системных таблиц повлечь за собой неполадки в работе SQL Server.
Слайд 24Системный каталог
Системный каталог включает в себя системные таблицы, используемые СУБД для управления
системой.
Системный каталог существует только в БД master.
Системный каталог содержит метаданные, относящиеся ко всему экземпляру SQL Server и параметры системы.
Слайд 26Каталог базы данных
Каталог базы данных состоит из системных таблиц, используемых для управления
отдельной БД. В каждой БД имеется набор таких таблиц.
Слайд 27Системные хранимые процедуры
Системные хранимые процедуры – процедуры составленные из операторов T-SQL, поставляемые
вместе с SQL Server.
Системные процедуры работают с системными таблицами, позволяют получить системную информацию и выполнять задачи администрирования БД.
Слайд 28Использование системных хранимых процедур
Слайд 29Системные функции
Системные функции – набор встроенных функций, позволяющих обращаться к системным таблицам
при помощи операторов T-SQL и получать специфические данные о значениях параметров, объектах и настройках.