Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Объясните уровень изоляции транзакций REPEATABLE READ. От каких проблем он защищает?
REPEATABLE READ гарантирует, что данные, прочитанные в транзакции, остаются неизменными до её завершения. Защищает от грязного чтения (чтение некоммитнутых данных) и неповторяющегося чтения (изменение данных другим транзакциями).
Чем отличается Read Committed от Repeatable Read?
Основное отличие заключается в том, разрешает ли уровень изоляции неповторяющееся чтение. Read Committed это разрешает: два последовательных чтения одной и той же строки в транзакции могут вернуть разные данные, если другая транзакция изменила и зафиксировала эту строку между чтениями. Repeatable Read гарантирует, что多次读取 одной и той же строки в рамках транзакции вернут одинаковые данные, блокируя или используя снимки данных, чтобы предотвратить ее изменение другими транзакциями.
Что такое фантомное чтение (phantom read)? Решает ли эту проблему Repeatable Read?
Фантомное чтение — это аномалия, при которой транзакция повторно выполняет запрос, возвращающий набор строк по условию, и обнаруживает, что в результирующий набор добавились новые («фантомные») строки, которые были добавлены и зафиксированы другой транзакцией в промежутке между выполнениями запроса. Уровень изоляции Repeatable Read не решает проблему фантомного чтения в стандарте SQL. Для его предотвращения требуется более строгий уровень изоляции — Serializable.
В чём разница между уровнями изоляции Read Committed и Repeatable Read в PostgreSQL?
Read Committed гарантирует, что читаются только закоммиченные данные, но разные SELECT в одной транзакции могут видеть разное. Repeatable Read фиксирует снапшот в начале транзакции, и все запросы внутри её видят одну картину.
Чем REPEATABLE READ отличается от SERIALIZABLE?
REPEATABLE READ гарантирует, что данные, прочитанные в транзакции, не изменятся при повторном чтении. Однако он не защищает от логических аномалий при сложных условиях. SERIALIZABLE обеспечивает максимально строгую изоляцию, как если бы транзакции выполнялись строго последовательно. Это достигается ценой возможных ошибок сериализации и повторных попыток транзакций.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
5
Сложность:
7