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

4.9.12 Оптимизация под конкретную систему

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

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

Классификация пользовательских транзакций

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

    • время прихода в систему;

    • период;

    • временные ограничения;

    • приоритет;

    • примерное время выполнения;

    • необходимые данные;

    • функция полезности.

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

    • типу директивного срока (мягкие, жесткие или крепкие);

    • типу поступления в систему (периодические, апериодические);

    • типу доступа к данным − предопределенный (только чтение/только запись/обновление) или произвольный (т.е. заранее неизвестный);

    • известны ли необходимые данные?

    • известно ли примерное время выполнения?

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

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

Субд реального времени в оперативной памяти

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

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

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

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

Основная идея оптимизации в данном случае − снизить затраты при обработке коротких и только читающих транзакций. За счет ухудшения производительности при работе с обновляющими транзакциями можно придумать алгоритм, который практически сведет к нулю дополнительные затраты при выполнении только читающих транзакций [79].