Трудно было найти информацию по этому вопросу. Тем не менее, в какой-то момент я нашел утверждение, которое четко объяснило:
- Линеаризуемость обеспечивает изоляцию на уровне операций, в то время как Сериализуемость дает изоляцию на уровне транзакций.
(суммировано из подробного описания , найденного здесь )
Как пример:
![enter image description here](https://i.stack.imgur.com/0Q83I.png)
Здесь 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)