logo
Учебник ИСПиУ

4.9.8 Как бороться с перегрузкой системы из-за обилия сенсорных транзакций?

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

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

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