Skip to main content

Что такое изоляция снимков?

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

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

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

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