Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

Журнальные файлы в субд HyTech

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

В СУБД HyTech используется отдельный журнальный файл для каждой таблицы. Это позволяет избавиться от «узкого места» в виде общего журнального файла, что повышает надежность системы и делает процедуры резервного копирования более гибкими: можно копировать данные таблиц и связанного с ними журнального файла совершенно отдельно. С другой стороны, поскольку в рамках транзакции требуется иногда изменять данные в разных таблицах, – это увеличивает количество операций записи (нельзя произвести запись изменений через единственный разделяемый буфер), что негативно сказывается на производительности.

В СУБД HyTech переменная часть таблицы и является журнальным файлом. Постоянная часть изменяется только при выполнении операции упаковки.

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

СУБД HyTech не имеет встроенных систем архивации журнальных файлов и дублирования журнальных файлов в процессе работы сервера.

Словарь данных

Описание таблиц и других структур данных в СУБД обычно содержится в словаре данных. В HyTech имеются системные таблицы (системный каталог). При установке HyTech по умолчанию системные таблицы размещаются в каталоге %BASE_HYTECH_DIR%\DB\SYS, где %BASE_HYTECH_DIR% – базовый каталог установки сервера СУБД HyTech (например, C:\HyTech). Для работы со словарем данных имеются встроенные представления (view) к которым можно обращаться в SQL-запросах.

1.2 Управление данными в оперативной памяти Управление данными в оп

Управление данными в оперативной памяти включает:

  • Управление буферизацией данных при выполнении запросов на чтение;

  • Управление буферизацией данных при выполнении запросов на запись;

  • Разделение памяти для общих структур данных;

  • Управление пользовательскими структурами данных.

Управление буферизацией данных при выполнении запросов на чтение

  • Данные запросов читаются всякий раз повторно. Разделяемый буферный кэш не используется. Используется кэш файловой системы ОС.

  • Для получения первой записи имеется низкоуровневая функция. В остальных случаях результатом является всё подмножество записей целей – их количество на момент окончания запроса известно.

  • Поддерживаются возможности «закрепления» в памяти наиболее часто используемых данных. Используется механизм загружаемых словарей данных.

Управление буферизацией данных при выполнении запросов на запись

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

  • Журнал одновременно является данными. В заголовке журнала таблицы указано текущее количество записей в ней. В процессе транзакции заголовок не меняется – публикация изменений для остальных пользователей происходит после commit.

  • Журнальные файлы довольно компактны и по этой причине разделение по дискам не требуется.

Разделение памяти для общих структур данных

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

  • Данные словаря являются разделяемыми. Например, можно под пользователем HTADMIN выполнить запрос select * from TABLES; и увидеть временные таблицы других пользователей.

Управление пользовательскими структурами данных

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

1.3 Управление транзакциями, обеспечение многопользовательского доступа

Термины и определения

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

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

Снимок (исп. только в СУБД HyTech) – состояние таблицы БД. Механизм работы снимков можно описать следующим образом: при выполнении первого атомарного запроса из всей группы поисковых операций состояние таблицы «фотографируется». Последующие операции, используя этот «снимок», выполняют поиск для того же состояния БД, которое было на момент первого запроса. Все внесенные другими пользователями изменения «не видны» для данного пользователя. Это позволяет завершить всю сколь угодно длинную цепочку поисковых запросов без нарушения логической целостности.