Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процессор запросов




Диспетчер памяти

Функции и архитектура СУБД

Термин «база данных» обозначает информацию, которой управляет СУБД. Предполагается, что СУБД: 1) Обеспечивает пользователю возможность создавать новые базы данных и определять их схему с помощью специального языка, который называется языком определения данных. 2) Позволяет запрашивать данные и изменять их с помощью языка манипулирования данными. 3) Поддерживает хранение очень больших массивов данных, измеряемых гигабайтами и более, в течение долгого времени, защищая их от повреждения, неавторизованного использования, и, обеспечивая модификацию базы данных, и доступ к данным посредством запросов. 4) Контролирует доступ к данным одновременно множеством пользователей, не позволяя запросу одних влиять на запросы другого и, не допуская одновременного доступа, который может случайно испортить данные.

Первые коммерческие СУБД (60е годы) возникли из систем, выполнявших пункт 3 (см. выше), и существенно использовали файловые системы для хранения данных. Недостатком этих СУБД является то, что файловая система не гарантирует защиту от потери данных. Файловая система непосредственно не выполняют пункт 2, то есть не поддерживают язык запросов на данные файлов. Поддержка пункта 1 ограничена созданием структуры каталогов для файлов.

Обзор основных компонентов СУБД.

Диспетчер памяти
Данные, метаданные
Процессор запросов
Модиф. данных
Выборка данных
Модификация схемы
Диспетчер транзакций

 

Метаданные это информация о структуре данных. Например, имена таблиц, имена атрибутов, типы данных атрибутов, описание того какие атрибуты имеют индексы.

Задачи диспетчера памяти - получать требуемую информацию из хранилища данных и изменять в нем информацию по требованию расположенных выше уровней системы.

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

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

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

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

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

Пример: Найти баланс счетов Иванова. Схема базы данных: имеется два файла клиенты и счета. Простой дорогостоящий план – это прочитать весь файл клиенты для поиска Иванова. Если оптимизатору известно, что атрибут ФИО является уникальным, то поиск будет прекращен после нахождения первой записи, отвечающей критерию. В этом случае, в среднем, будет прочитано половина страниц файла. Затем нужно будет просмотреть файл счета для клиента с найденным номером. Более подходящий план будет построен, если атрибут ФИО имеет индекс. Типичный индекс типа B-tree позволит просмотреть все три дисковых блока для нахождения требуемого клиента. При наличии индекса на атрибуте клиент в файле счета можно найти один (или хотя бы один) счет клиента хотя бы за три дисковых операции. Если у клиента несколько счетов, то все они будут находиться на одной из соседних страниц индекса. Поскольку один клиент обычно не имеет большого числа счетов, то для выполнения рассмотренного запроса потребуется 6 – 10 обращений к диску. Select sum (value) FROM Клиенты Join Счета On ID-client=client Where FIO=’Иванов’.

Диспетчер транзакций

Транзакция – это последовательность операций с базой данных, рассматриваемая как единое целое. Транзакция либо успешно выполняется и СУБД фиксирует commit изменение базы данных, произведенное этой транзакцией во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии базы данных. Например, Прием на работу сотрудника и изменение численности отдела следует выполнять в рамках транзакции, чтобы гарантировать согласованное состояние данных. В противном случае, если после добавления записи в файл «сотрудники», или перед изменением численности отдела в файле «отделы» произойдет сбой, то данные будут находиться в несогласованном состоянии.

Параллелизм

Этот термин означает возможность одновременной обработки СУБД, многих транзакций с доступом к одним и тем же данным, причем в одно и то же время. Без управления параллелизмом возможны конфликтные ситуации, хотя каждая из параллельно выполняемых транзакций правильна сама по себе. Конфликтная ситуация выражается в том, что в результате могут быть получены данные, которых не было бы, если бы транзакции выполнялись последовательно. Можно выделить следующие конфликтные ситуации: 1) проблема потери результатов обновления 2) проблема незафиксированной зависимости 3) проблема несовместимого анализа (Транзакция A суммирует балансы трех счетов, а транзакция B переводит сумму в 10 условных единиц со счета 3 на счет 1.

Счет 1=40=>50, Счет 2=50, Счет 3=30=>20. Z=120.

Транзакция А Время Транзакция B
Извлеч. счет 1 Sum=40 t1 --
Извлеч. счет 1 Sum=40 T2 --
-- T3 Извлеч. счет 3
-- T4 Обновление счет 3: 30->20
-- T5 Извлеч. счет 1
-- T6 Обновление счет 1: 40->50
Извлеч. счет 3 T7 commit
Sum=110 T8  

)

Блокировка

Описанные выше проблемы могут быть разрешены с помощью методики управления параллельным выполнением процессов под названием «блокировка». Ее идея состоит в том, что в случае, когда для выполнения некоторой транзакции необходимо чтобы некоторый объект не изменялся непредсказуемо без ведома этой транзакции, такой объект блокируется. То есть запрещается доступ к этому объекту со стороны других транзакций.

Обычно поддерживается два типа блокировок: X блок (блокировка записей) и S блок (блокировка чтения).

X блокировка называется также блокировка без взаимного доступа, а S блокировка – с взаимным доступом.

Если транзакция А блокирует картеж с помощью X блокировки, то есть без взаимного доступа, то запрос другой транзакции B с блокировкой этого картежа будет отменен (то есть любой). Если транзакция A блокирует картеж с помощью S блокировки, то запрос другой транзакции B на X блокировку будет отвергнут, а на S блокировку принят.




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 1124; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.