Что такое Isolation в базах данных

«Что такое Isolation в базах данных» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Изоляция (Isolation) определяет, насколько операции одной транзакции видны другим транзакциям. Уровни изоляции помогают избегать проблем параллельного доступа:

  1. Read Uncommitted – транзакции видят даже незафиксированные изменения других транзакций (грязное чтение).
  2. Read Committed – видны только завершённые изменения (избегаем грязного чтения).
  3. Repeatable Read – гарантирует, что повторное чтение в одной транзакции даст те же данные (избегаем неповторяемого чтения).
  4. Serializable – полная изоляция, транзакции выполняются последовательно (избегаем фантомного чтения).
// Пример в Room
@Dao
interface UserDao {
    @Transaction
    @Query("SELECT * FROM User")
    suspend fun getUsers(): List<User> // По умолчанию Room использует уровень изоляции SQLite
}

SQLite поддерживает SERIALIZABLE (по умолчанию) и READ UNCOMMITTED (через PRAGMA). Room не позволяет явно менять уровень изоляции, но можно использовать SupportSQLiteDatabase для ручного управления.