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

Монитор таблиц

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

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

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

При открытии пользователем таблицы происходит обращение к монитору таблиц. Монитор просматривает список открытых таблиц и, если не находит требуемой таблицы, выполняет действия по ее реальному открытию. Если же таблица уже открыта и режим доступа позволяет, монитор увеличивает счетчик пользователей таблицы и возвращает пользователю обработчик таблицы. Таким образом, операция открытия таблицы проходит достаточно быстро. Например, при выполнении операций удаления, копирования или переименования выполняются два «быстрых» обращения к монитору таблиц. Сначала блокируется имя обрабатываемой таблицы, что позволяет монитору контролировать это имя и блокировать операции с данной таблицей. Затем пользователь выполняет все необходимые действия, связанные с данной операцией. На последнем этапе имя таблицы деблокируется в мониторе, и его можно вновь использовать, например, создать новую таблицу взамен удаленной.

Монитор транзакций

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

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

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