Sobes.tech
Назад к вопросам
Senior
5

Что такое транзакции и свойства ACID?

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech AI

Транзакция — это последовательность операций с базой данных, которая выполняется как единое целое. Если одна из операций не удаётся, все изменения откатываются, чтобы сохранить целостность данных.

Свойства ACID обеспечивают надежность транзакций:

  • Atomicity (Атомарность): транзакция либо выполняется полностью, либо не выполняется вовсе.
  • Consistency (Согласованность): после завершения транзакции база данных остаётся в корректном состоянии.
  • Isolation (Изолированность): параллельные транзакции не влияют друг на друга, как если бы выполнялись последовательно.
  • Durability (Надёжность): после подтверждения транзакции её изменения сохраняются даже при сбоях.

Пример на Go с использованием базы данных и транзакций:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("INSERT INTO users(name) VALUES(?)", "Alice")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}

Здесь операции внутри транзакции либо все применятся, либо при ошибке откатятся.