2013-07-09 3 views
1

Являются ли преимущества использования уровней изоляции сериализации и моментального снимка одинаковыми?Уровень изоляции Serializable vs snapshot

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

Но они получают те же преимущества, такие как ни фантом не читает и так далее

В том, что, как правило, лучше использовать уровень изоляции моментальных снимков для предотвращения блокировки?

В каких обстоятельствах вы предпочитаете использовать сериализуемые снимки?

Благодаря

ответ

1

Там находится всего четыре уровня изоляции в SQL92, Snapshot Isolation был изобретен оракулом первым, но SQL Server 2005 и InnoDB также поддерживают его, изоляция моментальных снимков, как правило, реализуется MVCC ~

Возьмите MariaDB/Innodb в качестве примера:
уровень изоляции по умолчанию повторяется для чтения, так как SQL92 определяет этот уровень изоляции может произойти фантом, но из-за MVCC, InnoDB может предотвратить фантом даже в повторяемого чтения ~

Я считаю:
Изоляция снимка не определена в стандарте sql, оракул рассматривает его как неблокирующую сериализованную изоляцию, innodb рассматривает его как основанный на mvcc, избегая фантомной повторяемой изоляции чтения, но эффект такой же: более высокая производительность, чем обычная сериализованная изоляция, нефантом чем обычная повторяемая изоляция считывания ~

2

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

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

Однако SERIALIZABLE будет записывать блок в любые данные, которые попадают в диапазон того, что вы читаете. Он будет блокировать диапазон значений ключей, которые вы читаете.

В этой статье очень много делается для углубленного изучения. Serializable vs. Snapshot Isolation Level