В чем разница между сериализуемостью и линеаризуемостью? - PullRequest
6 голосов
/ 20 ноября 2011

Я очень запутался между этими двумя моделями согласованности. Пожалуйста, приведите несколько примеров с указанием сроков. http://en.wikipedia.org/wiki/Consistency_model

1 Ответ

16 голосов
/ 28 ноября 2011

Трудно было найти информацию по этому вопросу. Тем не менее, в какой-то момент я нашел утверждение, которое четко объяснило:

  • Линеаризуемость обеспечивает изоляцию на уровне операций, в то время как Сериализуемость дает изоляцию на уровне транзакций.

(суммировано из подробного описания , найденного здесь )

Как пример:

enter image description here

Здесь A, B и C - это три разные транзакции, выполняемые одновременно. r (varname) означает, что текущая транзакция обращается к значению внутри varname, а w (varname) означает, что текущая транзакция записывает определенное значение в varname.

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

В этом случае:

Log1: A.r(x), B.r(X), B.r(Y), A.w(X), C.r(Y)

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

Из нашего примера это может привести к:

Log2: A.r(x), A.w(x), B.r(X), B.r(Y), C.r(Y)
...