Автор работы: Пользователь скрыл имя, 13 Мая 2012 в 12:12, реферат
Реляционные СУБД обладают рядом особенностей, влияющих на организацию внешней памяти. К наиболее важным особенностям можно отнести следующие:
Наличие двух уровней системы: уровня непосредственного управления данными во внешней памяти (а также обычно управления буферами оперативной памяти, управления транзакциями и журнализацией изменений БД) и языкового уровня (например, уровня, реализующего язык SQL). При такой организации подсистема нижнего уровня должна поддерживать во внешней памяти набор базовых структур, конкретная интерпретация которых входит в число функций подсистемы верхнего уровня.
Cтруктуры внешней памяти, методы организации индексов. 2
Методы организации хранения данных в СУБД 4
Организация хранения 4
Методы доступа 8
Проблемы управления внешней памятью 11
Заключение 12
Литература 13
Оглавление
Cтруктуры внешней памяти, методы организации индексов. 2
Методы организации хранения данных в СУБД 4
Организация хранения 4
Методы доступа 8
Проблемы управления внешней памятью 11
Заключение 12
Литература 13
Реляционные СУБД обладают рядом особенностей, влияющих на организацию внешней памяти. К наиболее важным особенностям можно отнести следующие:
Соответственно возникают
следующие разновидности
Мы рассматривали на примерах System R и Ingres два альтернативных подхода к организации реляционной СУБД с точки разделения функций между различными компонентами. Напомним, что в СУБД System R существовала интегрированная подсистема управления данными, транзакциями и журнализацией, в то время как в Ingres управление данными, было отделено от управления транзакциями и журнализацией.
У обоих этих подходов имеются свои преимущества и недостатки. Подход System R позволяет использовать более эффективные методы за счет совместного решения проблем физической и логической синхронизации, использовании общих протоколов при управлении буферами и журнализации и т.д. Но при этом в некотором смысле подсистема нижнего уровня становится монолитом; при самой удачной ее структуризации компоненты остаются связанными общими протоколами взаимодействия. Непродуманные локальные изменения одного компонента могут привести к фатальным последствиям для всей системы. Подход Ingres позволяет упростить структуру системы и сделать ее более гибкой, но это возможно только за счет огрубления алгоритмов: применения более грубых методов управления транзакциями; жестких протоколов журнализации и т.д.
В конечном счете любая конкретная система основывается на конкретном комплексном решении. Мы рассматриваем здесь фрагменты таких решений (эскизы).
Среди самых важных характеристик
любой базы данных следует назвать
производительность, надежность и простоту
администрирования.
Среди самых важных характеристик
любой базы данных следует назвать
производительность, надежность и простоту
администрирования. Знание того, как
большинство СУБД физически хранят
данные во внешней памяти, представление
о параметрах этого хранения и
соответствующих методах Хранение данных во внешней памяти в известных СУБД (Oracle, IBM DB2, Microsoft SQL Server, CA-OpenIngres, решения от Sybase и Informix и др.) организовано очень похожим образом. Организация храненияОсновными единицами физического
хранения являются блок данных, экстент,
файл (либо раздел жесткого диска). Логический
уровень представления Размер блока оказывает
Администратор отводит пространство
для базы данных на внешних устройствах
большими фрагментами: файлами и
разделами диска. В первом случае
доступ к диску осуществляется операционной
системой, что дает определенные преимущества,
например, работа с файлами средствами
ОС. Во втором случае с внешним устройством
работает сам сервер. При этом достигается
более высокая Пространством внешней памяти, отведенным
ему администратором, сервер управляет
с помощью экстентов (extent), т.е. непрерывных
последовательностей блоков. Информация
о наличии экстентов для
В Informix существует еще одна единица
физического хранения, промежуточная
между файлом (или разделом диска)
и экстентом, — это «чанк» (от
английского chunk, что дословно переводится
как «емкость»). Чанк позволяет более
гибко управлять очень большими
массивами внешней памяти. В одном
разделе диска или файле Общим для СУБД Oracle, DB2 и Informix является
понятие пространства (для Oracle и DB2 это
табличное пространство). Различные
логические структуры данных, такие
как таблицы и индексы, временные
таблицы и словарь данных размещены
в табличных пространствах. В DB2 и
Informix дополнительно можно
Одна логическая единица данных (таблица или индекс) размещается точно в одном пространстве, которое может быть отображено на несколько физических устройств или файлов. При этом физически разнесены (располагаться на разных дисках) могут не только логические единицы данных (таблицы отдельно от индексов), но и данные одной логической структуры (таблица на нескольких дисках). Такой способ хранения называется горизонтальной фрагментацией: таблица делится на фрагменты по строкам. В Oracle вместо термина «фрагментация» используется «секционирование» (partitioning). Фрагментация — один из способов повышения производительности. Могут применяться различные схемы записи данных во фрагментированные таблицы. Одна из них — круговая (round-robin), когда некоторая часть вставляемых в таблицу строк записывается в первый фрагмент, другая часть — в следующий и так далее по кругу. В данном случае за счет распараллеливания может быть увеличена производительность операций модификации данных и запросов. Существует и другая схема, включающая логическое разделение строк таблицы по ключу («кластеризация»). Данная схема позволяет избежать перерасхода процессорного времени и уменьшить общий объем операций ввода/вывода. Ее суть в том, что при создании таблицы все пространство значений ключа таблицы разбивается на несколько интервалов, а строкам с ключами, принадлежащими разным интервалам, назначаются различные месторасположения. Впоследствии, при обработке запроса, данная информация учитывается оптимизатором. Если производится поиск по ключу, то оптимизатор может удалять из рассмотрения фрагменты таблицы, не удовлетворяющие условию выборки. Например, создание кластеризованной таблицы будет выглядеть следующим образом (этот и все остальные SQL-скрипты приведены для Oracle): CREATE TABLE person ( num INTEGER, fio VARCHAR2 (30) ) PARTITION BY RANGE (num) ( PARTITION part1 VALUES LESS THAN ( 500 ) TABLESPACE tblspace1, PARTITION part2 VALUES LESS THAN ( 1000 ) TABLESPACE tblspace2 ) Здесь создаются два раздела part1 и part2, каждый из которых размещен в своем табличном пространстве (tblspace1 и tblspace2). Записи со значением поля num от 1 до 499 будут располагаться в первом разделе, а записи с номерами от 500 до 1000 — во втором (рис. 4).
Тогда при запросе: SELECT fio FROM person WHERE num BETWEEN 10 AND 40 оптимизатор будет производить поиск только в разделе part1, что может дать ощутимый выигрыш в производительности в таблице с десятками тысяч строк. Подобные механизмы Методы доступаСовременные СУБД предоставляют достаточно
широкий набор различных CREATE INDEX uc_fullname ON famous (UPPER(fullname)); Таблица 1. Famous FULLNAME SEX MARRIED BIRTH Mercury F. М NO 5-09-1949 Тэтчер М. Ж YES Ленин В.И. М YES 22-04-1870 ... ... ... ... Отличают также « B-деревья универсальны и |
CREATE INDEX emp_ind_01 ON famous (fullname, birth, sex) то запросы SELECT * FROM famous WHERE fullname > "Иван" SELECT * FROM famous WHERE fullname = "Васисуалий Лоханкин" AND birth BETWEEN '10.09.1880' AND '10.10.1880' SELECT * FROM famous WHERE fullname = "Скалидзе" AND birth BETWEEN '10.09.1880' AND '10.10.1880' and sex='M' смогут использовать этот индекс, а в следующих запросах: SELECT * FROM famous WHERE birth BETWEEN '10.09.2000' AND '10.10.2000' SELECT * FROM famous WHERE fullname="Скалидзе" AND sex="M" оптимизатор не сможет им воспользоваться, что связано с архитектурными особенностями данного типа индексирования. В данном примере индекс может быть использован при запросах по fullname, birth, sex либо fullname, birth либо только fullname. Несмотря на этот недостаток, индексы B-деревьев наиболее распространены и используются во всех рассматриваемых СУБД. Для B-дерева можно задать «степень использования страницы индекса» (fillfactor); так, в Oracle используются параметры PCTUSED и PCTFREE для блоков базы данных в том числе и индексных. При создании индекса его страницы заполняются только на указанный процент (рис. 5). При увеличении процента использования страницы увеличится скорость операций изменения индекса, однако возрастут также расходы на хранение и может увеличиться время выполнения запросов.
Каждая СУБД может иметь ряд дополнительных параметров, предоставляющих разработчику расширенные возможности конфигурирования В-деревьев. Хэш-индекс имеет небольшие накладные расходы на хранение, однако требует, чтобы распределение значений ключа индексирования было относительно постоянно, в противном случае потребуется частая переделка индекса на основе новой хэш-функции. Индексы на основе хэш-функций хорошо подходят для различного рода справочных таблиц. При этом не требуется, чтобы индексируемый столбец имел много повторяющихся значений, как того требуют битовые индексы. Битовые индексы также очень
компактны и полезны для CREATE BITMAP INDEX emp_ind_02 ON famous (sex) CREATE BITMAP INDEX emp_ind_03 ON famous (married) Битовые индексы обладают очень важным свойством: если производится запрос, включающий сложное условие выборки, которое составлено из предикатов OR, AND, NOT и «=», то оптимизатор может использовать имеющиеся по конкретным столбцам битовые индексы, объединяя их. B-деревья этого делать не позволяют (для этого потребовалось бы построить составной индекс по этим столбцам, специально для ускорения данного запроса). В рассматриваемом примере запрос вида: SELECT * FROM famous WHERE sex=«М» AND married=«YES» может использовать оба битовых
индекса emp_ind_02 и emp_ind_03. Однако тот же
запрос не сможет использовать два
отдельных индекса по этим же столбцам.
Битовые карты полезны в В DB2 используется оптимизированный вариант
B-дерева с двунаправленными указателями
и «упреждающей регистрацией обновлений»
(write-ahead logging), что позволяет ускорить
вставку данных. При создании индекса
можно также использовать некоторые
опции, например, указать серверу
о необходимости хранить в
структуре индекса В СУБД Oracle помимо многочисленных индексов используются «индексно-упорядоченные» (index-organized) таблицы и кластеры. В первом случае вся таблица индексирована по первичному ключу и организована в виде B-дерева. CREATE TABLE person (num INTEGER, fio VARCHAR2(30) CONSTRAINT pk_person PRIMARY KEY (num)) ORGANIZATION INDEX; Подобный метод организации хранения хорошо подходит для часто опрашиваемых больших (более 5 тыс. строк) и очень больших таблиц с небольшим объемом операций, для которых критично время выполнения запроса на точное совпадение по первичному ключу, например: SELECT * FROM person WHERE num=12 OR num=1000 Экономия времени при Кластер Oracle — это структура
для хранения одной или нескольких
таблиц, главным образом служащая
для ускорения операций их соединения,
в которой строки таблиц, удовлетворяющие
условию соединения, хранятся вместе.
Столбцы, используемые для соединения,
называются кластерным ключом. Значения
кластерного ключа сохраняются
один раз (дубликаты исключаются). Для
доступа по кластерному ключу
могут использоваться как B-деревья,
так и хэш-структуры, в этом случае
кластер является хэш-кластером. Стоит
также упомянуть битовый индекс
соединения (bitmap join), ускоряющий операции
объединения таблиц. В Sybase используются
B-деревья, а индекс может быть как
кластеризованным так и обычным.
В Informix можно применять Проблемы управления внешней памятьюРаспространенной проблемой
Фрагментация неизбежна и ЗаключениеЭффективность использования любых
методов доступа зависит от распределения
данных в запрашиваемых таблицах,
от стратегии работы оптимизатора СУБД
и от возможностей диалекта SQL. Поэтому
приведенные рекомендации носят
достаточно общий характер — все
определяется конкретной ситуацией. Решения,
принимаемые на этапах физического
проектирования и настройки, чаще всего
представляют собой компромисс между
достижением требуемых Рассмотренный перечень методов доступа
не является полным. Описаны лишь распространенные
технологии, которые можно назвать
традиционными. Например, за кадром остались
возможности современных СУБД, связанные
с реализацией расширяемой Литература1.A. Peled, Index-organized tables - When should they be used? (www.orapub.com) 2.К. Шаллахэмер, Все о фрагментации Oracle. (www.orapub.com) |
Информация о работе Cтруктуры внешней памяти, методы организации индексов