
- •Минобрнауки россии
- •Тема 2. Структура и механизмы ос Лекция №2. Структура и механизмы ос
- •Тема 3. Организация многопрограммной работы. Процессы и потоки Лекция №3. Организация многопрограммной работы
- •Тема 4 . Управление данными в ос. Файловая система Лекция №4. Управление данными в ос
- •Тема 5. Управление данными в субд. Концепции и архитектура субд. Представление пользователя Организация баз данных Лекция №5. Концепции и архитектура субд
- •Тема 6. Проектирование данных. Отношения Лекция №6. Отношения. Нормальные формы
- •Тема 2. Структуры хранения и доступа к данным. Индексы Лекция №2. Структуры хранения на примере sql Server
- •Тема 3. Информационно-логическое моделирование в разработке баз данных Лекция №3. Моделирование предметной области
- •Тема 4. Работа с данными. Язык баз данных Лекция №4. Основные понятия языка баз данных на примереSql
- •Лекция №5. Запросы к базе данных
- •Тема 5. Защита и безопасность при доступе данным в многопользовательской среде Лекция №6. Защита и безопасность данных
Тема 2. Структуры хранения и доступа к данным. Индексы Лекция №2. Структуры хранения на примере sql Server
В рамках данной лекции рассматриваются вопросы физических структур хранения данных.
В качестве иллюстрации рассматривается организация данных в SQL Server. Различают файлы трех типов.
Первичные файлы данных. Первичный файл данных является отправной точкой базы данных. Он указывает на остальные файлы базы данных. В каждой базе данных имеется один первичный файл данных. Для имени первичного файла данных рекомендуется использовать расширение MDF.
Вторичные файлы данных. Ко вторичным файлам данных относятся все файлы данных, за исключением первичного файла данных. Некоторые базы данных могут вообще не содержать вторичных файлов данных, тогда как другие содержат несколько вторичных файлов данных. Для имени вторичного файла данных рекомендуется использовать расширение NDF.
Файлы журналов. Файлы журналов содержат все сведения журналов, используемые для восстановления базы данных. В каждой базе данных должен быть по меньшей мере один файл журнала, но их может быть и больше. Для имен файлов журналов рекомендуется использовать расширение LDF.
Первая страница каждого файла — это страница заголовка файла; она содержит сведения об атрибутах данного файла. Некоторые другие страницы, расположенные в начале файла, тоже содержат системные сведения, например карты размещения. Одна из системных страниц, хранимых как в первичном файле данных, так и в первом файле журнала, представляет собой загрузочную страницу базы данных, которая содержит сведения об атрибутах этой базы данных.
Основной единицей хранилища данных в SQL Server является страница. Место на диске, предоставляемое для размещения файла данных (MDF- или NDF-файл) в базе данных, логически разделяется на страницы с непрерывным перечислением от 0 доn. Дисковые операции ввода-вывода выполняются на уровне страницы. А именно, SQL Server считывает или записывает целые страницы данных.
Экстент — это коллекция, состоящая из восьми физически непрерывных страниц; они используются для эффективного управления страницами. Все страницы хранятся в экстентах.
В SQL Server 2008 размер страницы составляет 8 КБ. Это значит, что в одном мегабайте базы данных SQL Server содержится 128 страниц. Каждаястраница начинается с 96-байтовогозаголовка, который используется для хранения системных данных о странице. Эти данные включают номер страницы, тип страницы, объем свободного места на странице и идентификатор единицы распределения объекта, которому принадлежит страница.
Экстенты являются основными единицами организации пространства. Экстент состоит из восьми непрерывных страницили 64 КБ. Это значит, что в одном мегабайте базы данных SQL Server содержится 16 экстентов.
Чтобы сделать распределение места эффективным, SQL Server имеет два типаэкстентов.
Однородные экстенты принадлежатодному объекту; все восемь страниц в кластере могут быть использованы только этимвладеющим объектом.
Смешанные экстенты могут находиться в общем пользовании уне более восьмиобъектов.Каждаяиз восьми страниц в экстенте может находиться во владении разных объектов.
Новая таблица или индекс — это обычно страницы, выделенные из смешанных экстентов. При увеличении размера таблицы или индекса до восьми страниц эти таблица или индекс переходят на использование однородных экстентов для последовательных единиц распределения. При создании индекса для существующей таблицы, в которой содержится достаточно строк, чтобы сформировать восемь страниц в индексе, все единицы распределения для индекса находятся в однородных экстентах.
Организация индекса
Индекс является структурой на диске, которая связана с таблицей или представлением и ускоряет получение строк из таблицы или представления. Индекс содержит ключи, построенные из одного или нескольких столбцов в таблице или представлении. Эти ключи хранятся в виде структуры сбалансированного дерева, которая поддерживает быстрый поиск строк по их ключевым значениям
Как и в ФС, в СУБД для доступа к данным по ключу с целью уменьшения времени на осуществление такого доступа применяется индексирование. Для объектов БД «таблица» (Table) или «представление» (View) могут быть организованы следующие типы индексов.
Кластеризованный индекс
Кластеризованные индексы организуют при упорядоченности строк данных в таблицах, на основе упорядоченности ключевыхатрибутов, определенных для таблицы или представления. Поскольку данные в таблице можно упорядочить единственным образом, то для каждой таблицы может иметься только один кластеризованныйиндекс.
Пример схемы реализации кластеризованного индекса в MicrosoftSQL:
Иллюстрация показывает, что последовательные значения индексасвязаны с указателями напоследовательные страницытаблицы, которая хранит строки данных в порядке значений ключевых атрибутов.
Если у таблицы есть кластеризованный индекс, то таблица называется кластеризованной. Если у таблицы нет кластеризованного индекса, то строки данных хранятся в неупорядоченной структуре, которая называетсякучей.
Некластеризованный индекс
Некластеризованные индексы используют, если упорядоченностьключевых атрибутов в индексе не соответствуетупорядоченности хранения строк данных таблицы. В некластеризованном индексе содержатся значения ключа некластеризованного индекса, и каждая строка индекса содержит указатель на строку данных, содержащую значение ключа.
Указатель из строки индекса в некластеризованном индексе, который указывает на строку данных, называется указателем строки. Структура указателя строки зависит от того, хранятся ли страницы данных в куче или в кластеризованной таблице. Длякучи указатель строки являетсяуказателем на строку. Длякластеризованной таблицы указатель строки данных соответствует ключевому атрибуту(ам), по которому организован кластеризованный индекс.
Пример схемы реализации кластеризованного индекса в MicrosoftSQL:
Учебник / Учебное пособие |
Раздел |
Страницы |
Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001.- 304 с.; ил. |
Глава 9 |
162-197 |