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

4.9.11 Диспетчеризация транзакций

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

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

Было изучено множество различных политик назначения приоритетов [79] − как для назначения приоритетов различным классам транзакций, так и транзакциям внутри одного класса. Рассмотрим для примера несколько вариантов политик назначения приоритетов различным классам транзакций:

Поскольку для корректного завершения транзакции необходимо, чтобы использованные ей данные были временно целостными, то полезно ввести понятие директивного срока данных (data-deadline). Директивный срок данных транзакции − это момент времени, по истечении которого временная целостность использованных данных будет нарушена. Естественно, что дальнейшее выполнение этой транзакции будет бесполезной тратой ресурсов, так как она все равно не сможет быть нормально завершена. Следовательно, учет информации о директивных сроках данных транзакций может помочь повысить производительность системы.

Директивный срок данных транзакции T вычисляется согласно следующему алгоритму:

. (4.9.3)

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

priorityT=*data_deadlineT+(1–)*deadlineT. (4.9.4)

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

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

Этот алгоритм учитывает только data-deadline транзакции. Согласно этому алгоритму транзакция T1 с большим директивным сроком, но с маленьким data-deadline получит больший приоритет, чем транзакция T2 с меньшим директивным сроком. Следовательно, транзакция T2 может не успеть завершиться по причине пропуска директивный срока, тогда как, если T2 назначить больший приоритет, то и T1 и T2 могут успеть завершиться.

. (4.9.5)

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

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

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