Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Шехтман.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

11.2.5. Инвертированные списки.

Для вторичных индексов. (См. Главу 1, раздел 1.5.).

12. Архитектура субд. Методы оптимизации запросов.

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

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

Рис. Структура СУБД.

Рис. Оперативная память, управляемая СУБД.

Задачей управления внешней памятью является обеспечение создания необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например для ускорения доступа к данным в некоторых случаях (например, индексы). Как мы видели ранее, в некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа осуществляется на уровне устройств внешней памяти. Но в любом случае пользователь не обязан знать способы организации. СУБД поддерживает собственную систему именования объектов БД. Модуль управления буферами оперативной памяти предназначен для решения задачи эффективной буферизации, которая используется для выполнения всех остальных функций СУБД.

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

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

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

Каждая таблица системного каталога содержит информацию об отдельных структурных элементах СУБД. В SQL2 определены:

Системная таблица

Содержание

USERS

Одна строка для каждого идентификатора пользователя с зашифрованным паролем

SCHEMA

Одна строка для каждой информационной схемы

DATA_TYPE_DESCRIPTION

Одна строка для каждого домена или столица, имеющего определенный тип данных

DOMAINS

Одна строка для каждого домена

DOMAIN_CONSTRAINTS

Одна строка для каждого ограничивающего условия, наложенного на домен

TABLES

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

VIEWS

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

COLUMNS

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

VIEW_TABLE_USAGE

Одна строка для каждой таблицы, на которую имеется ссылка в каком-либо представлении (если представление многотабличное, то для каждой таблицы заносится одна строка)

VIEW_COLUMN_USAGE

Одна строка для каждого столбца, на который имеется ссылка в некотором представлении

TABLE_CONSTRAINTS

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

KEY_COLUMN_USAGE

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

rential_constraints

Одна строка для каждого внешнего ключа, присутствующего в определении таблицы

CHECK_CONSTRAINTS

Одна строка для каждого условия проверки, заданного в определении таблицы

CHECK_TABLE_USAGE

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

CHECK_COLUMN_USAGE

Столбец, на который ссылается условие проверки, ограничительном условии для домена или ином.

ASSERTIONS

Декларативное ограничение целостности

TABLE_PRIVILEGES

Привилегия пользователя по отношению к таблице

COLUMN_PRIVILEGES

Привилегия пользователя по отношению к столбцу

USAGE_PRIVILEGES

Привилегия пользователя по отношению к домену, набору символов, …

CHARACTER_SETS

Набор символов

COLLATIONS

Последовательность

TRANSLATIONS

Преобразование

SQL_LANGUAGES

Язык, поддерживаемый СУБД.

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

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

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

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

Методы синтаксической оптимизации запросов

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

К методам, используемым при синтаксической оптимизации запросов, относятся следующие: