Когда транзакция откатывается в протоколе упорядочения меток времени, почему ей дается новая метка времени? - PullRequest
0 голосов
/ 26 мая 2011

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

Ответы [ 2 ]

5 голосов
/ 26 мая 2011

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

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

Подумайте об очереди людей в почтовом отделении, и есть кто-то с запросом, который не может быть обслужен, и этому человеку было разрешено немедленно повторно войти в очередь спереди (а не сзади). Сколько времени потребуется, прежде чем наступит ваша очередь?

2 голосов
/ 26 мая 2011

Поскольку могут быть другие транзакции, совершенные с новой отметкой времени

  • Начальная временная метка в X
  • Транзакция T1 начинается
  • T1 выделяет временную метку, увеличивает ее до значения X + 1
  • Транзакция T2 начинается
  • T2 выделяет временную метку, увеличивает ее до значения X + 2
  • T2 фиксирует
  • T1 откатывается

Если T1 откатит метку времени до X, тогда третья транзакция вызовет конфликт с выделенным значением T2. То же самое касается приращения и последовательности. Если вам нужны значения монолитной последовательности (без пропусков), то транзакции должны быть сериализованы, и это происходит ценой мрачного исполнения.

...