Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен / database.pdf
Скачиваний:
43
Добавлен:
06.02.2018
Размер:
583.8 Кб
Скачать

http://slava.fateback.com

43

УВВ — устройство ввода-вывода.

Штрихованный прямоугольник — обозначение очереди.

Больше всего времени тратится на ввод данных, так как самое медленное устройство в этой схеме — это человек. Ускорение процесса ввода информации человеком выходит за рамки рассмотрения. Пользователя больше интересует задержка между вводом данных и их отображением.

Скорость обслуживания очереди к CPU не имеет значения для БД, так как оно происходит очень быстро. Основная задержка при работе СУБД — это обслуживание очереди к УВВ, а там основное время тратится на механическое перемещение считывающих головок. СУБД должна уметь управлять очередью к УВВ. И это есть неотъемлемая часть оптимизации запросов.

Требование на закачку данных должно соответствовать возрастанию физических адресов. Только так можно предотвратить беспорядочное перемещение считывающих головок. Кроме того, чем больше внешний кэш для очереди УВВ, тем лучше. Также, чем больше будет размер системных буферов, тем больше туда можно закачивать необходимых данных и, следовательно, избежать обращения к УВВ; другими словами, чем больше памяти, тем лучше. Хорошая СУБД захватит всю оперативную память в момент старта, и поэтому ее не надо ставить на рабочую станцию — лучше выделить отдельный сервер.

Качественная СУБД должна уметь предсказывать, какие данные в системных буферах ей понадобятся, а какие нет. Для эффективного управления системными буферами СУБД должна учитывать статистику обращений.

3.2Классификация методов доступа

Определение 3.1 Методом доступа называется алгоритм преобразования значения поискового ключа в адреса соответствующих ему записей в БД.

Замечание. Метод доступа подразумевает соответствующую ему структуру хранения данных.

Поскольку основным фактором является поиск данных, то классифицируем запросы, и эту классификацию применим к методам доступа.

Воснове классификации — количество записей, соответствующих запросу.

1.Получить все или почти все записи.

При реализации запроса требуется от x% до 100% записей БД. Пример таких запросов — квартальные отчеты. Этому классу запросов соответствуют методы доступа с последовательной обработкой данных.

Среди таких методов доступа известны два:

(a)Физически смежная организация.

(b)Связные списки.

Эти методы не подразумевают использования индексных файлов.

2.Получить уникальную запись.

В этом случае поисковый ключ является первичным ключом, всегда подразумевается использование индексных файлов, реальных или виртуальных.

Соответствующие этому классу запросов методы:

http://slava.fateback.com

44

(a)Индексно-последовательные.

(b)Индексно-произвольные.

(c)Прямой метод и методы хеширования.

(d)Иерархические методы доступа — бинарные деревья, B-деревья.

3.Получить некоторые записи (от 0% до x%).

Методы доступа, соответствующие этому классу — мультисписки и инвертированные файлы.

Замечание. СУБД должна содержать несколько вариантов методов доступа. По этой технологии была разработана СУБД Postgress. Промышленные СУБД реализуют один универсальный метод доступа, но используют алгоритмы нескольких методов. Пример такой СУБД — Oracle.

Замечание. Значение x — это порог для каждой конкретной СУБД. Если количество требуемых записей меньше x, то подключаются индексные файлы, если больше x, то индексные файлы отключаются.

Решение о включении/отключении индексных файлов принимается СУБД в процессе физической оптимизации запроса.

Чем больше значение x, тем качественнее считается СУБД. К примеру, в MS Access, FoxPro, dBase x=10%; в Oracle x=25%.

Вообще, можно привести такую классификацию различных СУБД (весна 2003):

Уровень 1: СУБД Oracle, которая сейчас считается одной из самых лучших, прежде всего по уровню многопользовательского режима обслуживания.

Уровень 2: Ingress, Sybase, Interbase.

Уровень 3: SQL Server 2000 (по технологии это уровень 2, но по реализации его место здесь).

Уровень 4: dBase, FoxPro, Access, Clarion, Clipper.

Замечание. Рассмотренная классификация соответствует первому фактору для физической организации. Различные варианты методов доступа внутри класса предназначены для реализации других факторов, прежде всего второго и третьего.

3.2.1Последовательный метод доступа

Основным признаком последовательного доступа является то, что очередная запись может быть прочитана только тогда, когда прочитаны все предыдущие.

Если записи в файле располагаются друг за другом, то такая организация называется физически смежной.

Если записи связаны друг с другом в цепочку (посредством указателей), то такая организация называется связным списком.

Обычно записи при последовательной организации упорядочены по возрастанию первичного ключа.

http://slava.fateback.com

45

При физически смежной организации записи блокируются: физические блоки фиксированной длины содержат несколько физических записей переменной длины (во многих других методах доступа требуется фиксированный размер записи). Как правило, количество физических записей в блоке должно быть целым, но это не принципиально.

Поиск записей

Утверждение 3.1 Для того, чтобы в последовательном файле, содержащем n записей, выбрать k записей, произвольным образом расположенных в файле, необходимо просмотреть в среднем kk+1·n записей.

Доказательство. (Цель — продемонстрировать методику доказательства оценки) Обозначим через xi местоположение i-й искомой записи (i = 1, 2, . . . , k). При достаточно больших n, xi можно считать непрерывной величиной. По предположению, xi — независимые случайные величины. Предположим также, что xi имеют равномерное распределение. Это предположение чаще всего наименее обоснованно, но если нет никакой статистики, то другого выхода тоже нет. С другой стороны, ничего не стоит использовать в доказательстве другую функцию распределения, если она известна. Можно привести простой пример.

Допустим, что x — слово в русско-английском словаре. Для языка известна функция распределения каждой буквы алфавита для слов, следовательно, в данном случае можно и не использовать равномерное распределение.

Возможна также ситуация, когда СУБД сама ведет статистику, строит гистограмму распределения значения x (см. Кузнецов, журнал «Программирование»).

Продолжим, однако, доказательство:

Средняя длина поиска:

n

R

a¯ = a · f(a)da (этот факт известен из теории вероятностей), где f(a) — плотность

0

вероятности случайной величины a.

F (a) = (функция распределенияa) = P (x1 6 a x2 6 a ... xk 6 a) = ( ) (Знак 6 следует из определения последовательного доступа).

Из условия независимости случайных величин имеем:

n

Y

( ) = P (xi 6 a) =

i=1

= (учитывая равномерность распределения с.в.x) =

k

 

a

=

a

 

k

 

 

 

 

 

 

 

= i=1

 

 

 

 

 

 

 

 

 

 

 

n

n

k

1

 

 

 

 

 

 

Y

 

 

 

 

 

 

ka

 

 

 

 

 

 

 

f(a) = F 0(a) =

nk

 

 

 

 

 

 

 

n

 

 

 

kak−1

 

 

kak+1

 

 

knk+1

 

 

 

a¯ = R0

 

 

 

 

 

n

 

 

k n

 

a ·

 

da =

 

|0

=

 

=

k+1·

nk

nk(k+1)

nk(k+1)

Заметим здесь, что можно было получить ту же оценку комбинаторным способом.

Модификация записей при последовательном доступе Выполнение операций дополнения, удаления и изменения записей в момент поступления запроса на эти операции приведет к блокированию доступа к данным для других пользователей на длительное время. Поэтому формируется три буферных файла:

http://slava.fateback.com

46

1.Файл дополняемых записей.

2.Файл удаленных записей.

3.Файл измененных записей.

Вконце технологического периода (обычно это конец смены) службой сопровождения «запускается» утилита актуализации данных, которая формирует новый файл, переписывая записи из старого файла под управлением информации из буферов.

При последовательном доступе необходима диспетчеризация запросов на поиск данных, т.е. их упорядочение по возрастанию значения первичного ключа (обычно записи упорядочены по возрастанию первичного ключа). Это предотвратит беспорядочное перемещение считывающих головок. Работа без диспетчера на некоторых типах устройств возможна, но крайне неэффективна, т.е. среднее время запроса будет очень большим.

Для связных списков, в отличие от физически смежной организации, операции по модификации данных выполняются в момент поступления запроса. Поэтому для достижения локальности модифицирующих воздействий при работе со связными списками необходима следующая последовательность операций:

1.При дополнении записи. Определяются две записи, между которыми надо вставить новую. К новой записи дополняется указатель на вторую запись. Новая запись помещается в конец файла, либо для нее выделяется место из списка. Указатель в первой записи модифицируется на указатель на новую запись. Локальность временная, файл неактуален только в момент модификации указателя. Таким образом, время неактуальности файла сводится к минимуму.

2.При удалении. Определяется удаляемая запись, и указатель из нее помещается в следующую запись. Локальность — тоже на момент модификации. Проблема — при удалении записи в файле появляются пустые записи (вырождение файла). Для предотвращения вырождения файла из удаленных записей формируется список, который далее используется при дополнении записей.

Для связных списков необходимо периодическое выполнение процедуры или утилиты сопровождения, которая выполняет физическое упорядочение записей в файле и очищает список удаленных записей.

Зачем упорядочивать? Чтобы избежать беспорядочного перемещения головок.

Замечание. Физически смежная организация по сей день актуальна и используется во многих СУБД, в частности, при архивации данных.

Замечание. От связных списков в основных файлах БД отказались давно, но они используются в индексных файлах.

3.2.2Индексно-последовательная организация

Если предыдущий метод доступа предназначен для реализации только первого класса запросов, то этот метод предназначен как для первого, так и второго класса запросов (последовательный и индексный).

http://slava.fateback.com

47

Файл для индексно-последовательного метода доступа имеет блочную структуру. Блоки фиксированной длины содержат целое количество записей переменной длины. При этом записи упорядочены по возрастанию первичного ключа.

Для увеличения скорости поиска записи по ключу формируется индексный файл, имеющий аналогичную блочную структуру. Записи в нем также упорядочены по возрастанию ключа, причем одна запись индекса соответствует одному блоку индексного файла, и содержанием этой записи является максимальное значение ключа в блоке основного файла и указатель на начало блока.

При больших объемах основного файла автоматически формируются индексы более высоких уровней, в которых по аналогичным правилам индексируются индексные файлы низших уровней.

Впервые этот метод доступа был реализован в системах IBM-360, IBM-370. Этот метод доступа носит название ISAM (Index Serial Access Method).

Реализация этого метода на физическом уровне: пространство магнитного диска разбивается на цилиндры. Цилиндром в пакете дисков называется совокупность дорожек, находящихся на одной вертикали. Верхнюю дорожку занимает блок индексного файла, а нижние дорожки цилиндра — соответствующие этому блоку блоки основного файла.

За счет этого достигается реализация поиска данных по индексу и последовательный доступ без механического перемещения считывающих головок.

Такое размещение позволяет операции перемещения головок свести к минимуму, а значит, увеличивается скорость доступа к данным.

Рассмотрим, как производится дополнение записей в этом методе доступа. При дополнении очередной записи определяется блок, в который она должна быть помещена (это определяется по индексу).

Однако, здесь возникает проблема: так как блок фиксированной длины, то все записи в него могут не помещаться.

Решение:

1.Метод области переполнения. Записи, не вошедшие в блок основного файла, перемещаются в отведенное свободное пространство на диске, называемое областью переполнения, в которой они не сортируются, а связываются друг с другом в цепочку. Таким образом, для каждого блока основного файла — своя цепочка в области переполнения.

2.Метод отведенного свободного пространства. При первоначальной загрузке основного файла его блоки заполняются частично, т.е. в каждом блоке образуется свободное пространство. Традиционно сложилось, что свободное пространство должно занимать 30%.

При интенсивном поступлении новых записей некоторые из блоков могут оказаться почти полностью в области переполнения, тогда как другие будут не заполнены. Это резко снижает скорость поиска из-за хаотического перемещения головок жесткого диска, поэтому необходима периодическая реорганизация индексно-последовательного файла (перемещение записей между блоками и организация новых индексов)

Резюме. ISAM — единственный метод, удовлетворяющий двум противоречащим факторам — скорости поиска и минимальности занимаемого дискового пространства. Однако, он неприменим к изменчивым файлам. Если частота обновления данных высокая, то данный метод приводит к разбалансировке файловой системы.

Соседние файлы в папке экзамен